spring文件的上传和下载
文件上传
文件上传需要用到两个类,MultipartFile和MultipartHttpServletRequest,它们都是在spring的web包中,同时需要在spring容器中配置MultipartResolver
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
注意:此处的id必须取multipartResolver这个名字,否则配置无效。
MultipartFile用于接收从页面传过来的文件
MultipartHttpServletRequest可以处理多个上传文件
@RequestMapping(value="upload2",method=RequestMethod.POST)
public void upload2(MultipartHttpServletRequest request,HttpServletResponse response){
Iterator<String> itr=request.getFileNames(); while(itr.hasNext()){
MultipartFile myfile=request.getFile(itr.next());
String originName=null;
try {
originName=new String(myfile.getOriginalFilename().getBytes("iso-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String realPath=request.getServletContext().getRealPath("/upload")+"/"+originName;
try {
myfile.transferTo(new File(realPath));//该方法用于传输文件到指定路径
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
单个的文件上传把参数MultipartHttpServletRequest改为MultipartFile
@RequestMapping(value="upload",method=RequestMethod.POST)
public void upload(MultipartFile myfile,HttpServletRequest request,HttpServletResponse response){
......
}
文件下载
以前的想法,文件下载直接把超链接指定到文件所在位置,但这种方式在某些浏览器行不通。
解决办法是:链接访问后台,由后台处理传输字节流,返回给前台。
@RequestMapping("download")
@ResponseBody
public void download(HttpServletRequest request,HttpServletResponse response){
String path="1.docx";
String realpath=request.getServletContext().getRealPath("/upload")+"/"+path;
File file=new File(realpath);
StringBuffer sb=new StringBuffer();
try {
FileInputStream fis=new FileInputStream(file);
ServletOutputStream out=response.getOutputStream();
response.setHeader("Content-Disposition",
"attachment; filename="+new String("1.xxx".getBytes("iso8859-1"),"utf-8"));//设置下载文件的文件名
byte[] b=new byte[1024];
while(fis.read(b)!=-1){
out.write(b);
} } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这样就可以处理在任何浏览器中的下载功能。
注意此处的response.setHeader方法,该方法用于设置下载文件的名称,如果不设置,下载的文件就不能按正确的格式打开。
spring文件的上传和下载的更多相关文章
- Spring MVC 实现文件的上传和下载
前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...
- 在SpringMVC框架下实现文件的 上传和 下载
在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...
- 文件的上传和下载--SpringMVC
文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载.邮件附件的上传和下载等. 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解. 一.文件上传 多数文件上传都是通过表单 ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- SecureCRT使用sz和rz命令进行文件的上传和下载
SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...
- 使用FTPClient进行文件服务器内文件的上传和下载
我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手.我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出 ...
- iOS开发中文件的上传和下载功能的基本实现-备用
感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...
- Apache FtpServer 实现文件的上传和下载
1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
随机推荐
- 【剑指Offer】33、丑数
题目描述: 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数 ...
- Nginx服务(端口80)
Nginx安装: 一.编译安装 1.安装相应软件 yum install pcre pcre-devel openssl openssl-devel -y 2.检查: rpm -aq pcre pcr ...
- 使用GitHub代码仓库Repositories上传自己的项目代码
1.下载客户端github(必须下载,需要该软件所提供的Git shell输入命令来上传项目)下载地址: https://github-windows.s3.amazonaws.com/GitHubS ...
- lca学习题
http://www.cnblogs.com/scau20110726/archive/2013/06/14/3135095.html
- JAVA必背面试题和项目面试通关要点(带答案)
转载:https://blog.csdn.net/qq_36896779/article/details/78247050 一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链接 ...
- GitLab 7.5.3 CentOS7安装和SMTP配置
CentOS 7安装GitLab还是比較简单的,依照官方文档的提示一步一步操作下来.就一个地方须要改动. 參考:GitLab安装说明 在安装好以后,执行 gitlab-ctl reconfigure ...
- POJ 3281(Dining-网络流拆点)[Template:网络流dinic]
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmlrZTBnb29k/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...
- C/C++中字符串String及字符操作方法
本文总结C/C++中字符串操作方法,还在学习中,不定期更新. .. 字符串的输入方法 1.单个单词能够直接用std::cin,由于:std::cin读取并忽略开头全部的空白字符(如空格,换行符,制表符 ...
- Android与JS互相调用以及注意
近期项目中常常使用Html5而Android与JS调用常常会用到,这里记录一下,測试系统5.0以上. 这里先贴一下源代码 Activity: package jwzhangjie.com.webvie ...
- 2016.04.19,英语,《Vocabulary Builder》Unit 16
top, comes from topos, the Greek word for 'place'. ectopic: [ek'tɑːpɪk] adj. [医]异位的,异常的 topical: ['t ...