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万个以上,且包 ...
随机推荐
- html系列教程--标题,水平线,注释以及段落
HTML标题 标题,用来显示文章重要性的文字,包含了文章的主旨,类似于作文题目. 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的,由大到小一次排列,h1 ...
- nide.js(二)文件I/O
文件I/O fs模块的基本用法 node.js中提供一个名为fs的模块来支持I/O操作,fs模块的文件I/O是对标准POSIX函数的简单封装. 1.writeFile函数的基本用法 文件I/O,写入是 ...
- Android基础之CountDownTimer 倒计时类
app常用的60s倒计时计时功能: private static final int TIME_LIMIT = 60; private void initView() { // 相关控件 mResen ...
- JS 更改表单的提交时间和Input file的样式
JS转换时间 function renderTime(data) { var da = eval('new ' + data.replace('/', '', 'g').replace('/', '' ...
- MySQL:Error : Tablespace for table '`database`.`temp`' exists. Please DISCARD the tablespace before IMPORT.解决办法
今天在navicat上操作mysql数据库表,突然没有响应了.随后重启,mysql服务也终止了.随后启动服务,检查表,发现一张表卡没了,就重新添加一张表.报了一个错: Error : Tablespa ...
- leetcode Sudoku Solver python
#the define of Sudoku is on this link : http://sudoku.com.au/TheRules.aspx Write a program to solve ...
- 微软TTS示例
#include "sphelper.h" #include "sapi.h" #pragma comment(lib, "sapi.lib" ...
- xtrabackup执行备份要拥有的权限
xtrabackup备份的原理: xtrabackup直接复制datadir目录中的文件到备份目录下.这样问题就来了,在备份的时候mysql可以还在执行写入操作:所以xtrabackup会不停的去扫描 ...
- Delphi 的接口机制——接口操作的编译器实现过程(1)
学习COM编程技术也快有半个月了,这期间看了很多资料和别人的程序源码,也尝试了用delphi.C++.C#编写COM程序,个人感觉Delphi是最好上手的.C++的模版生成的代码太过复杂繁琐,大量使用 ...
- sql like 通配符 模糊查询技巧及特殊字符
最近碰到like模糊匹配的问题,找到一些答案接触迷惑,觉得有知识是自己忽略的,现在整理出来,既强化记忆,又是一次记录,以下转自一篇Blog,关于sql server like的通配符和字符带通配符的处 ...