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. iOS开发笔记:编译时出现的错误和解决办法

    1."std::ios_base::Init::~Init()", referenced from 出现这样的编译问题,是需要再加进libstdc++.dylib和libstdc+ ...

  2. 关于FIND_IN_SET 和distinct 的坑爹的一天

    FIND_IN_SET的使用,前面介绍过,distinct是结果去重复的函数,两者结合使用,却花费了我一天的光阴. 1.先面试含有重复值正确的显示顺序select  lIdfrom tbCourse1 ...

  3. JavaScript中创建命名空间

    引用:http://ourjs.com/detail/538d8d024929582e6200000c   在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺 ...

  4. verilog 随笔

    不是说你在代码里定义一个reg型变量,综合器就会综合处一个寄存器来,case必须在always块里,always里面的被赋值变量必须是reg型,这是语法的规定,只能遵守.写代码的时候不要加入触发器(不 ...

  5. c 函数传入数组。

    php 里面 直接 count($arr); 一个函数搞定, c里面想判断下数组的个数却非常困难. 想到php是C写的,那看看他的函数怎么写的不就行了... 哦,天啊,,事实比我想的要复杂的多... ...

  6. canvas1

    canvas学习(一) Canvas 学习之路 (一) canvas 是H5 里面神一样的东西,使得只是通过html和js就能做出非常棒的游戏和画面. 因为对前端无限的爱好,更加对canvas充满好奇 ...

  7. IC卡存储器介绍

    自从80年代中期出现IC电话卡后,基本已取代了原来流行的电话磁卡,磁卡存在存在严重的安全问题,已逐步淘汰.即使IC电话卡,也不能算很安全,卡内所有数据只要有简单的读写装置并按时序操作都能读取,事实上电 ...

  8. 面向对象程序设计-C++_课时28静态对象_课时29静态成员

    Static in C++ Two basic meanings Static Storage --allocated once at a fixed address Visibility of a ...

  9. 04737_C++程序设计_第10章_面向对象设计实例

    10.6.2 使用包含的参考程序及运行结果. 头文件cpp10.h 源文件cpp10.cpp 源文件Find10.cpp 头文件cpp10.h #if ! defined(CPP10_H) #defi ...

  10. Saiku图表导出时中文显示问题的解决方法

    Saiku图表导出时png,jpg,pdf三种格式的中文显示都有问题,目前找到一种不太完善的解决方法(中文可以显示但不清晰),需要修改Saiku项目下的ExporterResource.java文件, ...