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. App.config和Web.config配置文件的自定义配置节点

    前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文 ...

  2. 解决VS2010打开Web页面时经常由于内存较低而导致VS2010自动关闭的问题

    在使用VS2010 开发Web应用程序的时候,经常打开一个Web页面进行编辑前台代码的时候要等待很久(甚至等了半天结果还挂掉,简直令人抓狂), 之前也在网上找了很多相关的方法,都没办法解决,今天无意中 ...

  3. OC中文件的操作

    OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了哪些可以操作文 ...

  4. Linux学习之查找命令汇总

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  5. day10_python学习笔记_chapter13_面向对象编程

    1. class NewClass(parent): def .... 如果没有父类, 则默认继承object类 2. 类属性访问(类似java中的静态属性和方法)直接用类名.属性名, 在python ...

  6. OpenCV学习 6:平滑滤波器 cvSmooth()——2

    原创文章,欢迎转载,转载请注明出处 前面进行了彩色的模糊处理,我们对黑白图片进行同样的平滑处理,看看效果.首先是需要创建黑白图片,我对opencv的各种函数还不是很熟悉,我们可以先用熟悉的创建单通道的 ...

  7. 宏定义&CodeBlocks&Glib

    一.gcc的参数中-Dmacro             等价于代码里   #define macro -Dmacro=value  等价于代码里   #define macro value -Uma ...

  8. CSS3 Test

    CSS3Test 如何判定一个浏览器对css3的支持情况呢 有这么一个站点http://css3test.com 可以测试浏览器对CSS3的支持情况 对应的Github在这里 原理 实际上浏览器对CS ...

  9. 引用(ajaxfileupload.js) ajaxfileupload.js报这错jQuery.handleError is not a function

    jQuery.handleError is not a function 原因是,经测试handlerError只在jquery-1.4.2之前的版本中存在,jquery-1.6 和1.7中都没有这个 ...

  10. gulp+webpack+vue

    gulp+webpack+vue 章节目录 1.目标 2.实现 2.1合并库文件 2.2组织业务代码 2.3打包开发代码 2.4使用webpack-dev-server和热替换插件HotModuleR ...