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 方式 ...
随机推荐
- 如何手动触发物理机panic,并产生vmcore
如何手动触发物理机panic,并产生vmcore? 1. 配置kdump 1.1 el6 如果是CentOS 6 则编辑/boot/grub/grub.conf配置在内核参数中添加 crashkern ...
- swift UITableViewCell 中的单选控制样式
我昨天在网上找了一晚上的资料,但是大多都是OC得语法,swift资料实在是太少了,使得我这个刚入门swift的彩笔好不吃力,后面一直各种翻阅资料,终于让我找到了 visibleCells 这个方法,直 ...
- python 各个地方导航(方便查询,持续更新!)
老男孩python全栈开发教程,武沛齐老师的知识点!:戳这里>>> 老男孩python全栈开发教程,linhaifeng老师的知识点!:戳这里>>> 老男孩pyth ...
- 利用负margin实现元素居中
原理就是对当前元素的position设置为absolute并且相对于父元素定位,先设置left:50%;top:50%使当前元素的左上角处于父元素的中心位置,之后再应用负margin特性使其中心位于父 ...
- SBC37x交叉编译平台QT+OPENCV【2】虚拟机Vbox下Ubuntu的磁盘扩容
虚拟机Vbox下Ubuntu,当初为了学习,仅仅分配了8g,结果qt,opencv等一上,就说room空间不够了.于是开始折腾磁盘扩容. 网上一大堆,也不知道有多少是自己动手走过,正是不但浪费别人时间 ...
- Mysql学习总结(12)——21分钟Mysql入门教程
21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...
- 【ACM】poj_2092_Grandpa is Famous_201308021920
Grandpa is FamousTime Limit: 2000MS Memory Limit: 30000K Total Submissions: 7256 Accepted: 3670 De ...
- HTTP基本认证(Basic Authentication)的JAVA演示样例
大家在登录站点的时候.大部分时候是通过一个表单提交登录信息.可是有时候浏览器会弹出一个登录验证的对话框.例如以下图,这就是使用HTTP基本认证.以下来看看一看这个认证的工作过程:第一步: clien ...
- springmvc 监听器getWriter() has already been called for this response问题
springmvc 监听器getWriter() has already been called for this response问题 在监听器中,如果return true,就不要使用 respo ...
- 【cl】maven新建项目
http://blog.csdn.net/sushengmiyan/article/details/40142771 使用maven创建一个helloworld 在本地硬盘创建一个文件夹作为maven ...