Java实现文件的上传下载
文件上传,下载的方法:
上传代码
/**
* 文件上传、保存
*
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws IOException
*/
@SuppressWarnings("unchecked")
public ActionForward tzupload(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
BaseActionForm cForm = (BaseActionForm) form;
Dto reDto = cForm.getParamAsDto(request);
String uuid = new UUIDGenerator().create();
String ggid = new UUIDGenerator().create();
UserInfoVo userInfo = WebUtils.getSessionContainer(request).getUserInfo();
String gglx = "ggxx";
reDto.put("uuid", uuid);
reDto.put("ggid", ggid);
reDto.put("yxbz", "Y");
reDto.put("lrr_dm", userInfo.getUserid()); FormFile formfile = cForm.getFile1();
String filename = formfile.getFileName();// 获取文件的名字
// 获取当前时间
Date date = new Date();
SimpleDateFormat simpledate = new SimpleDateFormat("yyyy-MM-dd");
String dqsj = simpledate.format(date);
String urlfile = readProperties.getProperties().getProperty(
"FILEUPLOAD1")
+ formfile;
final String wjlj = readProperties.getProperties().getProperty(
"FILEUPLOAD2")
+ formfile; if (filename.length() > 0) {
reDto.put("wjlj", wjlj);
reDto.put("wjmc", filename);
reDto.put("ggid", ggid);
reDto.put("gglx", gglx);
reDto.put("scsj", dqsj);
reDto.put("lrrq", dqsj);
reDto.put("yxbz", "Y");
reDto.put("lrr_dm", reDto.getAsString("lrr_dm"));
mobilesBsService.updatewjlj(reDto); File file = new File(urlfile);
if (file.exists()) {
file.mkdir();// 创建路径
}
File filecreate = new File(urlfile);
// 检查路径是否
if (!filecreate.exists()) {
FileOutputStream out = new FileOutputStream(filecreate);
out.write(formfile.getFileData());
out.flush();
out.close();
} else {
FileOutputStream out = new FileOutputStream(filecreate);
out.write(formfile.getFileData());
out.flush();
out.close();
} }
Dto pDto = mobilesBsService.saveTzggDatas(reDto);
pDto.put("gglx", gglx);
mobilesBsService.createHtml(pDto);
String wjname = ggid + ".html";
pDto.put("wjname", wjname);
mobilesBsService.saveHtml(pDto); setOkTipMsg("文件上传成功", response);
return mapping.findForward(null); }
下载代码
/**
* 文件下载
*
* @param mapping
* @param form
* @param request
* @param reponse
* @return
* @throws Exception
*/
public ActionForward downloadfile(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception, Exception {
// private final static String
String filename = request.getParameter("wjmc");
filename = new String(filename.getBytes("ISO-8859-1"), "utf-8");
String filesavepath = request.getRealPath("/upload/fileupload1");
//String path = findFileSavePathByFileName(filename,filesavepath);
//得到要下载的文件
File file = new File(filesavepath+"\\"+filename);
if(!file.exists()){
request.setAttribute("message", "要下载的文件已删除");
request.getRequestDispatcher("/message.jsp").forward(request, response);
}
//处理文件名
String realname = filename.substring(filename.indexOf("_")+1);
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
//创建文件输入流
FileInputStream in = new FileInputStream(file);
//创建输出流
OutputStream out = response.getOutputStream();
//创建缓存区
byte buffer[] = new byte[1024];
int len = 0;
while((len = in.read(buffer))>0){
//输出缓冲区的内容到浏览器,实现文件下载
out.write(buffer, 0, len);
}
//关闭文件输入流
in.close();
//关闭输出流
out.close();
return mapping.findForward(null);
}
/**
* 通过文件名和上传文件根目录找出要下载的文件
* @param filename
* @param saveRootPath
* @return
*/
public String findFileSavePathByFileName(String filename,
String saveRootPath) {
int hashcode = filename.hashCode();
int dir1 = hashcode & 0xf; // 0--15
int dir2 = (hashcode & 0xf0) >> 4; // 0-15
String dir = saveRootPath + "\\" + dir1 + "\\" + dir2; // upload\2\3
// upload\3\5
File file = new File(dir);
if (!file.exists()) {
// 创建目录
file.mkdirs();
}
return dir;
}
Java实现文件的上传下载的更多相关文章
- Java实现文件的上传下载(含源代码和jar包)
1.需要使用的jar包 链接:https://pan.baidu.com/s/1IaxQRSwfzxDpe4w4JiaEKw 提取码:xwtz 2.如果想实现文件的下载,需要创建一张表,表的结构为 i ...
- java实现文件的上传和下载
1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...
- java客户端文件的上传和下载
java客户端文件的上传和下载 //上传 public JTable upload(String id){ JTable table=new JTable(); System.out.println( ...
- JAVA中使用FTPClient上传下载
Java中使用FTPClient上传下载 在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在c ...
- Spring实现文件的上传下载
背景:之前一直做的是数据库的增删改查工作,对于文件的上传下载比较排斥,今天研究了下具体的实现,发现其实是很简单.此处不仅要实现单文件的上传,还要实现多文件的上传. 单文件的下载知道了,多文件的下载呢? ...
- SocketIo+SpringMvc实现文件的上传下载
SocketIo+SpringMvc实现文件的上传下载 socketIo不仅可以用来做聊天工具,也可以实现局域网(当然你如果有外网也可用外网)内实现文件的上传和下载,下面是代码的效果演示: GIT地址 ...
- JAVAWEB之文件的上传下载
文件上传下载 文件上传: 本篇文章使用的文件上传的例子使用的都是原生技术,servelt+jdbc+fileupload插件,这也是笔者的习惯,当接触到某些从未接触过的东西时,总是喜欢用最原始的东西将 ...
- SSM框架之中如何进行文件的上传下载
SSM框架的整合请看我之前的博客:http://www.cnblogs.com/1314wamm/p/6834266.html 现在我们先看如何编写文件的上传下载:你先看你的pom.xml中是否有文件 ...
- 使用Fileupload完成文件的上传下载
目录 使用Fileupload完成文件的上传下载 为什么需要进行文件上传下载? 引入jar包 文件上传 注意事项 编写一个简单的文件上传jsp页面 编写Servlet Student类用于封装数据,后 ...
随机推荐
- JS构造函数(便于理解,简易)
* 构造函数: * 1.构造函数的函数名最好首字母大写(否则 WebStorm 编辑器会提示报错) * 2.自己的对象多次被复制 * 3.构造函数里可以创建公有属性.公有方法.私有属性和私有方法 * ...
- Oracle SYS用户无法设置session级别的read only
官方文档参考:SYSDBA is used internally in the Oracle database and has specialized functions. Its behavior ...
- 查询python的安装路径
参考链接: https://blog.csdn.net/orangleliu/article/details/44907221 (tf_14) novak@novak-ZBook15G2:~$ pyt ...
- [转]Linux学习
Linux简介与厂商版本 http://www.cnblogs.com/vamei/archive/2012/09/04/2671103.html Linux开机启动(bootstrap) http: ...
- Matlab Colour Theme
[转]http://blog.csdn.net/df865017/article/details/48164429 使用MATLAB进行编码时, 长时间面对白底黑字的屏幕, 眼睛会疼! 因此, 选择一 ...
- [19/03/17-星期日] 常用类_Calendar日历类&GregorianCalendar公历日历类
一.概念 Calendar 类是一个抽象类,为我们提供了关于日期计算的相关功能,比如:年.月.日.时.分.秒的展示和计算. GregorianCalendar 是 Calendar 的一个具体子类,提 ...
- HDU 2859 Phalanx(对称矩阵 经典dp样例)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2859 Phalanx Time Limit: 10000/5000 MS (Java/Others) ...
- TDD:代码可测试设计
1 方法内部代码命令,查询分离. a . 命令方法:执行一系列动作. b. 查询方法: 执行查询动作,并返回值. 2 一个类中有好几个地方都用到了一个或多个全局变量,可以考虑把全局变量封装到另外 ...
- .NET MVC伪静态
说明:MVC中的伪静态跟我们的WebForm里面的伪静态不一样(详情:配置伪静态(URL重写)) 由于我们的MVC中存在路由,所以我们不必去处理每个访问的页面进行重写,我们完全可以再配置一个路由让他显 ...
- MVC5 模型 生成EF
在看本篇之前请先去了解一下EF以及如何利用模型生成数据库 https://i.cnblogs.com/posts?categoryid=1107227 看Code First就可以了. 等你了解了E ...