java附件上传下载磁盘版
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附件上传下载磁盘版的更多相关文章
- java附件上传下载大字段版
public int up2(Map map) { StringBuffer insertSQL = new StringBuffer(); insertSQL.append("insert ...
- 2013第38周日Java文件上传下载收集思考
2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...
- java 附件上传、下载前后端代码
前言:业务需要:附件上传,需要同时满足浏览器上传,和APP上传附件,并且浏览器端不可使用form表单提交,因为表单提交无法直接获取返回值,除非刷新页面才可显示上传的附件.所以此处使用ajaxfileu ...
- Java Sftp上传下载文件
需要使用jar包 jsch-0.1.50.jar sftp上传下载实现类 package com.bstek.transit.sftp; import java.io.File; import ja ...
- fastDFS与Java整合上传下载
由于项目需要整合个文件管理,选择使用的是fastDFS. 整合使用还是很方便的. 准备 下载fastdfs-client-java源码 源码地址 密码:s3sw 修改pom.xml 第一个plugin ...
- Java.ftp上传下载
1:jar的maven的引用: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...
- java FTP 上传下载删除文件
在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...
- Java文件上传下载原理
文件上传下载原理 在TCP/IP中,最早出现的文件上传机制是FTP.它是将文件由客户端发送到服务器的标准机制. 但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的 文件上传原 ...
- java文件上传下载组件
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验: 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包 ...
随机推荐
- org.hibernate.QueryException: could not resolve property: address of:
Hibernate: select count(*) as y0_ from test.course this_ org.hibernate.QueryException: could not res ...
- 浅谈树链剖分(C++、算法、树结构)
关于数链剖分我在网上看到的有几个比较好的讲解,本篇主要是对AC代码的注释(感谢各位witer的提供) 这是讲解 http://www.cnblogs.com/kuangbin/archive/2013 ...
- centos安装中文支持(转)
安装中文支持包. yum install fonts-chineseyum install fonts-ISO8859-2 -------- 一.安装中文支持方法1.在安装光盘中找到一下包进行安装.r ...
- Nginx与Tomcat安装、配置与优化
Nginx与Tomcat安装.配置与优化 Nginx与Tomcat安装.配置与优化 Nginx的安装与使用 Nginx是一款优秀的反向代理服务器 安装: rpm(或者是pkg安装),是预编译好的程序包 ...
- php获取网页内容方法 小偷程序 采集程序
抓取到的内容在通过正则表达式做一下过滤就得到了你想要的内容,至于如何用正则表达式过滤,在这里就不做介绍了,有兴趣的,以下就是几种常用的用php抓取网页中的内容的方法.1.file_get_conten ...
- mysql错误提示不是英语的解决办法
mysql提示突然就变成法语了,google了一下,找到了解决方法:打开my.ini文件,找到[mysqld]配置项如下 [mysqld] port explicit_defaults_for_tim ...
- 关于QT、GCC、GNU下各个版本的下载地址
http://download.qt.io/ http://ftp.gnu.org/gnu/gcc/ http://ftp.gnu.org/pub/gnu/
- [问题解决] Could not update ICEauthority file /home/username/.ICEauthority
错误: Could not update ICEauthority file /home/username/.ICEauthority 发生场景: 虚拟机下的ubuntu server12.04 解决 ...
- Android扫描SD卡中的文件
当android的系统启动的时候,系统会自动扫描sdcard内的多媒体文件,并把获得的信息保存在一个系统数据库中,以后在其他程序中如果想要访问多媒体文件的信息,其实就是在这个数据库中进行的,而不是直接 ...
- Win32中安全的子类化(翻译)
关于子类化的话题虽然有些旧,但它至今仍然不失为一种开发Windows的强有力技术,在MFC的内核.甚至.NET的内核中都离不开它,希望本连载能对Windows开发的爱好者有所帮助. 原文标题:Safe ...