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 方式 ...
随机推荐
- Maven使用package打包Spring Boot时出现:Unable to find a single main class from the following candidates的问题解决
问题如下: [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.3.5.RELEASE ...
- [jQuery]jQuery获取URL参数
// jQuery url get parameters function [获取URL的GET参数值]// <code>// var GET = $.urlGet(); //获取URL的 ...
- [Cypress] Test React’s Controlled Input with Cypress Selector Playground
React based applications often use controlled inputs, meaning the input event leads to the applicati ...
- Oracle GoldenGate 支持 从SAP HANA database抽取或者复制数据到SAP HANA database 吗?
Oracle GoldenGate 支持 从SAP HANA database抽取或者复制数据到SAP HANA database 吗? 来源于: Does Oracle GoldenGate Su ...
- root用户不能改动iptables
需求:因为防火墙做了IP和port限制,如今须要加入一条规则使之能够訪问指定的IP和port. vi /etc/sysconfig/iptables, 加入完毕后,wq保存,提示文件仅仅读无法保存.! ...
- 【cl】Unable to find executable for: taskkill
十二月 02, 2015 5:16:56 下午 org.openqa.selenium.os.ProcessUtils killWinProcess警告: Process refused to die ...
- 对Java单继承的弥补——接口
接口主要用来实现多重继承,它是常量和方法的集合,这些方法只有声明没有实现,即接口本身是抽象的,系统默认用abstract修饰. 1.接口的定义: public interface A{ int A=1 ...
- 错误: su: 无法设置组: 不允许的操作
到 /bin目录下,用ls -l 看下su文件的权限是不是rwxr-xr-x或者-rwxrwxrwx 执行这条命令chmod ug+s su
- Android代码宏控制方案 【转】
本文转载自:http://blog.sina.com.cn/s/blog_769500f001017ro6.html 目前107分支上,在各项目projectConfig.mk中已添加项目宏以及客户宏 ...
- lightoj--1005--Rooks(组合数)
Rooks Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu Submit Status De ...