ACTION

public class UploadAction extends BaseAction {

    private static final long serialVersionUID = 1L;

    @Autowired
private UploadService uploadser; public String index() {
return "upload";
} // 附件上传
public void up() throws IOException { // 设置文件缓存地址和缓存大小,需要时在设置/
File bufferTemp = new File(Path.UPLOAD_FILES);
if (!bufferTemp.exists()) {
bufferTemp.mkdirs();
}
if (attfile != null) {
Map<String, Object> fileInfo = getfileInfo();
File savefile = new File(bufferTemp, fileInfo.get("fileid") + "."
+ fileInfo.get("fsuffix"));
if (!savefile.getParentFile().exists())
savefile.getParentFile().mkdirs();
FileUtils.copyFile(attfile, savefile);
response.setContentType("text/html;charset=UTF-8");
if (uploadser.save(fileInfo) > 0) {
response.getWriter().write(
"<script type='text/javascript'>window.parent.callback('"
+ fileInfo.get("fileid") + "', '"
+ fileInfo.get("filename")
+ fileInfo.get("fsuffix") + "', 'success', '"
+ fileInfo.get("filetype") + "');</script>");
} else {
response.getWriter().write(
"<script type='text/javascript'>window.parent.callback('"
+ fileInfo.get("fileid") + "', '"
+ fileInfo.get("filename")
+ fileInfo.get("fsuffix") + "', 'failure', '"
+ fileInfo.get("filetype") + "');</script>");
}
} } // 附件下载
public void down() throws IOException {
Map<String, Object> fileinfo = new HashMap<String, Object>();
fileinfo = uploadser.getFileInfo(fileid); String filename = fileid + "." + fileinfo.get("fsuffix");
File file = new File(Path.UPLOAD_FILES + "\\" + filename);
if (!file.exists()) {
response.sendError(404, "File not found!");
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(
file));
byte[] buf = new byte[1024];
int len = 0;
response.setCharacterEncoding("utf-8");
response.setContentType("application/x-msdownload");
response.setHeader(
"Content-disposition",
"attachment; filename="
+ URLEncoder.encode(fileinfo.get("filename") + "."
+ fileinfo.get("fsuffix"), "utf-8"));
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
} // 删除单个附件
public void del() throws IOException {
int row = uploadser.delByFileId(fileid);
response.getWriter().print(row > 0 ? true : false);
} // 组合上传附件信息
private Map<String, Object> getfileInfo() {
Map<String, Object> infoMap = new HashMap<String, Object>();
infoMap.put("fileid", Tool.getUUID());
infoMap.put("filename",
attfileFileName.substring(0, attfileFileName.lastIndexOf(".")));
infoMap.put("filetype", filetype);
infoMap.put("dataid", dataid);
infoMap.put("fcreateuserid", getLogin().getId());
infoMap.put("fcreateusername", getLogin().getName());
infoMap.put("fcreatetime",
DateUtil.getCurrentDateAsString("yyyy-MM-dd"));
infoMap.put("fsuffix", attfileFileName.substring(
attfileFileName.lastIndexOf(".") + 1, attfileFileName.length()));
return infoMap;
} private String postfix; private String filetype; private String dataid; private String fileid; private File attfile; private String attfileFileName; public String getFileid() {
return fileid;
} public void setFileid(String fileid) {
this.fileid = fileid;
} public String getPostfix() {
return postfix;
} public void setPostfix(String postfix) {
this.postfix = postfix;
} public String getFiletype() {
return filetype;
} public void setFiletype(String filetype) {
this.filetype = filetype;
} public String getDataid() {
return dataid;
} public void setDataid(String dataid) {
this.dataid = dataid;
} public File getAttfile() {
return attfile;
} public void setAttfile(File attfile) {
this.attfile = attfile;
} public String getAttfileFileName() {
return attfileFileName;
} public void setAttfileFileName(String attfileFileName) {
this.attfileFileName = attfileFileName;
} }

SERVICE

@Service
public class UploadService { @Autowired
UploadDao uploaddao; // 保存
public int save(Map<String, Object> fileInfo) {
return uploaddao.save(fileInfo);
} // 取得附件列表
public List<Map<String, Object>> getFilesByDataId(String dataid) {
return uploaddao.getFilesByDataId(dataid);
} // 根据附件ID删除
public int delByFileId(String fileid) {
Map<String, Object> fileinfo = this.getFileInfo(fileid);
int reval = 0;
if (fileid.length() > 0) {
reval = delDiskFile(fileid + "." + fileinfo.get("fsuffix")) ? uploaddao
.delByFileId(fileid) : 0;
}
return reval;
} // 根据业务数据ID批量删除
public int delByDataId(String dataid) {
List<Map<String, Object>> filesinfo = this.getFilesByDataId(dataid);
Map<String, Object> fileinfo = null;
int reval = 0;
if (filesinfo.size() > 0) {
for (int i = 0; i < filesinfo.size(); i++) {
fileinfo = filesinfo.get(i);
delDiskFile(fileinfo.get("fileid") + "."
+ fileinfo.get("fsuffix"));
}
reval = uploaddao.delByDataId(dataid);
}
return reval;
} // 获取附件信息
public Map<String, Object> getFileInfo(String fileid) {
return uploaddao.getFileInfo(fileid);
} // 删除磁盘文件
private boolean delDiskFile(String filename) {
File file = new File(Path.UPLOAD_FILES + "\\" + filename);
boolean suc = false;
if (file.exists()) {
suc = file.delete();
}
return suc;
}
}

DAO

@Service
public class UploadService { @Autowired
UploadDao uploaddao; // 保存
public int save(Map<String, Object> fileInfo) {
return uploaddao.save(fileInfo);
} // 取得附件列表
public List<Map<String, Object>> getFilesByDataId(String dataid) {
return uploaddao.getFilesByDataId(dataid);
} // 根据附件ID删除
public int delByFileId(String fileid) {
Map<String, Object> fileinfo = this.getFileInfo(fileid);
int reval = 0;
if (fileid.length() > 0) {
reval = delDiskFile(fileid + "." + fileinfo.get("fsuffix")) ? uploaddao
.delByFileId(fileid) : 0;
}
return reval;
} // 根据业务数据ID批量删除
public int delByDataId(String dataid) {
List<Map<String, Object>> filesinfo = this.getFilesByDataId(dataid);
Map<String, Object> fileinfo = null;
int reval = 0;
if (filesinfo.size() > 0) {
for (int i = 0; i < filesinfo.size(); i++) {
fileinfo = filesinfo.get(i);
delDiskFile(fileinfo.get("fileid") + "."
+ fileinfo.get("fsuffix"));
}
reval = uploaddao.delByDataId(dataid);
}
return reval;
} // 获取附件信息
public Map<String, Object> getFileInfo(String fileid) {
return uploaddao.getFileInfo(fileid);
} // 删除磁盘文件
private boolean delDiskFile(String filename) {
File file = new File(Path.UPLOAD_FILES + "\\" + filename);
boolean suc = false;
if (file.exists()) {
suc = file.delete();
}
return suc;
}
}

java附件上传下载磁盘版的更多相关文章

  1. java附件上传下载大字段版

    public int up2(Map map) { StringBuffer insertSQL = new StringBuffer(); insertSQL.append("insert ...

  2. 2013第38周日Java文件上传下载收集思考

    2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...

  3. java 附件上传、下载前后端代码

    前言:业务需要:附件上传,需要同时满足浏览器上传,和APP上传附件,并且浏览器端不可使用form表单提交,因为表单提交无法直接获取返回值,除非刷新页面才可显示上传的附件.所以此处使用ajaxfileu ...

  4. Java Sftp上传下载文件

    需要使用jar包  jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import ja ...

  5. fastDFS与Java整合上传下载

    由于项目需要整合个文件管理,选择使用的是fastDFS. 整合使用还是很方便的. 准备 下载fastdfs-client-java源码 源码地址 密码:s3sw 修改pom.xml 第一个plugin ...

  6. Java.ftp上传下载

    1:jar的maven的引用: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  7. java FTP 上传下载删除文件

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...

  8. Java文件上传下载原理

    文件上传下载原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的 文件上传原 ...

  9. java文件上传下载组件

    需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...

随机推荐

  1. ORACLE函数TO_CHAR以及数字转换格式[Z]

    本来这是很简单的函数,但在屡次忘记格式之后,决定还是翻译一遍以铭记在心.      参考<<Oracle Database SQL Reference>>.      关于nl ...

  2. 从Quartz时间设置问题说起

    已经好久没有来写点啥了,原因有很多,不过最主要的还是自己很懒很懒,今天终于意识到问题的严重性了.所以就来了.今天的这个问题也是前不久刚刚遇到的问题.先不啰嗦,说重点了. 一.问题描述 定时任务项目发布 ...

  3. velocity 字符串 转化为数字

    #set($nPageIndex=$request.getParameter("nIndex")) #set($Integer = 0 ) #set($FrontPageSize= ...

  4. 线程间使用socket通信的计算器

    该程序是处理平时的算数运算,程序也没有什么特别之处,只是将所有运算分开运算,每个函数(线程)处理不同的运算符号里面的运算,然后将所有结果都汇总到main函数中进行最后汇总(相加减)运算,每个函数内都处 ...

  5. ThinkPHP中ajax提交数据

    最近在做项目时遇到了一些需要从页面用ajax提交数据到后台的操作,无奈本人技术有限,网上苦寻,研究了一下ajax和thinkPHP的结合,黄天不负苦心人,终于搞定了. 闲话少叙,进入正题:我需要从页面 ...

  6. J2SE知识点摘记(八)

    1.        多线程指的是在单个进程中可以同时运行多个不同的线程,执行不用的任务.多线程意味着一个程序的多行语句可以看上去几乎同时进行. 同样作为基本的执行单元,线程是划分得比进程更小的执行单位 ...

  7. Delphi下TLabel鼠标MouseEnter、MouseLeave更改颜色失灵

    在Delphi 7下,如果想在鼠标MouseEnter.MouseLeave的时候改变TLabel自身的颜色,很多人可能会采用 Label.Color := clRed;这样的方式来实现,我当初也是一 ...

  8. 深入理解Spring Redis的使用 (二)、RedisTemplate事务支持、序列化

    RedisTemplate api详解 1. RedisTemplate的事务 private boolean enableTransactionSupport = false; private bo ...

  9. javascript数组排序-----1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Android 启动Activity的方式

    Activity的启动分为两种方式,显示方式和隐式方式,显示方式就是在通过intent启动Activity时指定了Activity的包名和类名. 而隐式方式则在初始化Intent时仅仅指定action ...