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类用于封装数据,后 ...
随机推荐
- Word中划线的方法(五种)
Word中划线的方法(五种): 1. 按CTRL+F9,在出现的黑底花括号内,如图输入内容, 最后按SHIFT+F9(或者右键菜单点切换域代码),以后可以反复按ALT+F9在代码与结果之间切换. 注: ...
- IS Decisions如何帮助企业提高安全标准
PCI DSS标准有什么要求? 简单地说,PCI DSS要求最高级别的网络安全性.这一标准如今广泛应用于需要存储.管理.传输客户(或持卡人)个人数据的行业和领域. 施行严格的访问监控措施 为了保证关键 ...
- Oracle运行依赖的服务
1.Oracle ORCL VSS Writer Service. Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等) ...
- keras 自定义 custom 函数
转自: https://kexue.fm/archives/4493/,感谢分享! Keras是一个搭积木式的深度学习框架,用它可以很方便且直观地搭建一些常见的深度学习模型.在tensorflow出来 ...
- 生成centos7 安装脚本
[root@us-1-217 install]# cat gen7.py #!/usr/bin/env python # -*- coding: utf-8 -*- import os, crypt ...
- Spyder更改默认工作路径已经文件路径
打开spyder,选择菜单栏中的Tools--->Preferences--->Current working directory 然后选择最下面的单选按钮The following ...
- WAKE-SPM-综述
1,SPM 1,1source paper:http://lear.inrialpes.fr/pubs/2007/ZMLS07/ZhangMarszalekLazebnikSchmid-IJCV07- ...
- 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
这周Jerry在SAP上海研究院参加了一个为期4天的Kubernetes培训,度过了忙碌而又充实的4天.Jason,Benny和Peng三位大神的培训干货满满,借此机会,Jerry和过去的两位老领导P ...
- Uva 11922 Splay
Splay(伸展树)实现可分裂与合并的序列 对于BST,除了Treap树之外,还有一种Splay的伸展树,他能快速的分裂与合并. 重要的操作是伸展操作,将一个指定的结点 x 旋转到根的过程. 分三种情 ...
- react中修改antd的默认样式
最近在做react+antd项目.不可避免的遇到了修改antd默认样式的问题. 比如,table组件的表头背景色设置,如果直接使用元素样式,会修改整个项目的table.这里我用的方法是,给table添 ...