文件上传

文件上传需要用到两个类,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文件的上传和下载的更多相关文章

  1. Spring MVC 实现文件的上传和下载

    前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:“用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流”.我回复他说:“使用Spring MVC框架可以做到这一点,因为Spri ...

  2. 在SpringMVC框架下实现文件的 上传和 下载

    在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...

  3. 文件的上传和下载--SpringMVC

    文件的上传和下载是项目开发中最常用的功能,例如图片的上传和下载.邮件附件的上传和下载等. 接下来,将对Spring MVC环境中文件的上传和下载进行详细的讲解. 一.文件上传 多数文件上传都是通过表单 ...

  4. java实现ftp文件的上传与下载

    最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...

  5. SecureCRT使用sz和rz命令进行文件的上传和下载

    SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...

  6. 使用FTPClient进行文件服务器内文件的上传和下载

    我用的FTPClient是由Apache组织的commons-net.jar包中的API,这个包用起来非常的方便,很容易上手.我在项目开发的过程中主要用到了文件的上传和下载功能,下面将我开发的代码贴出 ...

  7. iOS开发中文件的上传和下载功能的基本实现-备用

    感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...

  8. Apache FtpServer 实现文件的上传和下载

    1 下载需要的jar包 Ftp服务器实现文件的上传和下载,主要依赖jar包为: 2 搭建ftp服务器 参考Windows 上搭建Apache FtpServer,搭建ftp服务器 3 主要代码 在ec ...

  9. 初学Java Web(7)——文件的上传和下载

    文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...

随机推荐

  1. Win32_Window(day02)

    --- 窗口创建函数 ---#include <Windows.h> //窗口处理函数 HINSTANCE g_hIns; LRESULT CALLBACK WndProc(HWND hW ...

  2. [tyvj1935 Poetize3]导弹防御塔 (二分图多重匹配)

    传送门 Description Freda控制着N座可以发射导弹的防御塔.每座塔都有足够数量的导弹,但是每座塔每次只能发射一枚.在发射导弹时,导弹需要T1秒才能从防御塔中射出,而在发射导弹后,发射这枚 ...

  3. CentOS7.4上搭建rocketMQ集群

    一.rocketMQ集群部署方案优缺点对比: 多Master模式(2m-noslave) : 一个集群无Slave,全是Master,例如2个Master或者3个Master 优点:配置简单,单个Ma ...

  4. 当样式中存在!important时无法使用show()或hide() 2017-06-11 22:25 15人阅读 评论(0) 收藏

    如果使用!important在你的样式中,比如display: none !important,此时就不能用show()了 但是我在查阅资料时发现有这样的解释, If using !important ...

  5. JS控制全屏,监听退出全屏事件

    实现方案 //进入全屏 function requestFullScreen(de) { if(de.requestFullscreen){ //W3C de.requestFullscreen(); ...

  6. 输入输出流String间的转换

    来自:http://wuhongyu.iteye.com/blog/806791 1.String  to  inputStream InputStream is = new ByteArrayInp ...

  7. hdu 2586 lca在线算法(朴素算法)

    #include<stdio.h> #include<string.h>//用c/c++会爆栈,用g++ac #define inf 0x3fffffff #define N ...

  8. 24 Point game

    24 Point game 时间限制:3000 ms  |  内存限制:65535 KB 难度:5   描述 There is a game which is called 24 Point game ...

  9. Java经典线程同步问题------生产者与消费者

    先上代码 class Test { public static void main(String []args) { Queue q=new Queue(); Producer p=new Produ ...

  10. 号外:java基础班教材永久免费 报名就送

    以前万人疯抢的成都传智播客java基础班教材,今日免费赠送,你hold的住吗? 由成都传智播客传道授业解惑的诸位老师,精心制作的教材.如今免费赠送,你能接的住吗? 书是交融感情.获得知识.传承经验的重 ...