springMVC.xml文件

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 上传文件大小上限,单位为字节(10MB) -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>

//需要导入fileupload包

<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>

1) 上传单个文件

页面:

<form action="${pageContext.request.contextPath}/upload/uploadFile" method="post" enctype="multipart/form-data">
<input type="file" name="imgFile"/>
<input type="submit" value="提交">
</form>

controller

@RequestMapping(value="uploadFile")
public String uploadFile(MultipartFile imgFile, HttpSession session) throws IllegalStateException, IOException{
 if(imgFile.getSize()==0){
     //没有上传文件
     return error;
   }
   //获取文件名称: temp.jpg
String oFilename = imgFile.getOriginalFilename();
   String path = session.getServletContext().getRealPath("/productImages"); //上传文件保存目录 //设置随机名称,防止文件名称重名
String uuidFilename = UUID.randomUUID().toString().replace("-", "") + oFilename.substring(oFilename.lastIndexOf(".")); imgFile.transferTo(new File(path, uuidFilename)); return "success";
}

2) 上传多个文件

页面:

<form action="${pageContext.request.contextPath}/upload/uploadFiles" method="post" enctype="multipart/form-data">
<input type="file" name="imgFiles"/>
<input type="file" name="imgFiles"/>
<input type="file" name="imgFiles"/>
<input type="submit" value="提交">
</form>

UploadVo

import java.util.List;
import org.springframework.web.multipart.MultipartFile;
public class UploadVo { private List<MultipartFile> imgFiles; public List<MultipartFile> getImgFiles() {
return imgFiles;
}
public void setImgFiles(List<MultipartFile> imgFiles) {
this.imgFiles = imgFiles;
} }

controller

@RequestMapping(value="uploadFiles")
public String uploadFiles(UploadVo vo) throws IllegalStateException, IOException{
//获取上传图片文件集合
List<MultipartFile> imgFiles = vo.getImgFiles(); for (MultipartFile multipartFile : imgFiles) { if(multipartFile.getSize() <= 0 ){//文件大小为0,跳过
continue;
}
//获取文件名称
String filename = multipartFile.getOriginalFilename();
//生成随机文件名
String uuidFilename = UUID.randomUUID().toString().replace("-", "")+filename.substring(filename.lastIndexOf("."));
//将文件写入磁盘中
multipartFile.transferTo(new File("d:/" + uuidFilename));
}
return "test";
}

文件下载

页面:

<a href="${pageContext.request.contextPath}/upload/download?filename=文件12.jpg">下载文件</a>

controller:

//下载文件
@RequestMapping(value="/download")
public ResponseEntity<byte[]> download(@RequestParam("filename") String filename) throws IOException{ //下载显示的文件名,解决中文名称乱码问题
String downloadFilename = new String(filename.getBytes("iso8859-1"), "utf-8");
//创建文件
File file = new File("d:/", downloadFilename); if(!file.exists()){
//文件不存在
return null;
} //创建请求头
HttpHeaders headers = new HttpHeaders(); //通知浏览器以attachment(下载方式)打开图片
headers.setContentDispositionFormData("attachment", filename); //application/octet-stream : 二进制流数据(最常见的文件下载)
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //返回ResponseEntity<byte[]>
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}

springMVC上传文件和文件下载的更多相关文章

  1. springmvc上传文件,抄别人的

    SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...

  2. 2. SpringMVC 上传文件操作

    1.创建java web项目:SpringMVCUploadDownFile 2.在项目的WebRoot下的WEB-INF的lib包下添加如下jar文件 com.springsource.com.mc ...

  3. 使用springMVC上传文件

    control层实现功能: @RequestMapping(value="upload2") public String upLoad2(HttpServletRequest re ...

  4. SpringMVC上传文件(图片)并保存到本地

    SpringMVC上传文件(图片)并保存到本地 小记一波~ 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multi ...

  5. SpringMVC上传文件总结

    如果是maven项目 需要在pom.xml文件里面引入下面两个jar包 <dependency> <groupId>commons-fileupload</groupId ...

  6. SpringMVC 上传文件 MultipartFile 转为 File

    在使用 SpringMVC 上传文件时,接收到的文件格式为 MultipartFile,但是在很多场景下使用都需要File格式的文件,记录下以便日后使用. 以下mFile为MultipartFile文 ...

  7. springmvc 上传文件时的错误

    使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class=" ...

  8. SpringMVC上传文件的三种方式(转)

    直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/common ...

  9. SpringMVC上传文件的三种方式

    直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/common ...

随机推荐

  1. javaScript中this的指向?

    javaScript中this对象是在运行时基于函数的执行环境绑定的,在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象. 但在实际中,代码环境复杂,th ...

  2. android中按back键返回上一个activity,如何重新调用上一个activity的oncreate方法?

    默认情况下是不会调用的. @Override public void onBackPressed() { String titleStr = edittitle.getText().toString( ...

  3. linux打包解压包(.tar .gz .tar.gz .zip)

    01-.tar格式 解包:[*******]$ tar xvf FileName.tar 打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压 ...

  4. bitcoin01

    bitcoin, blockchain 本文只是初步表面认识比特币的笔记... 详细信息请看相关链接. 比特币除了耗电,耗硬盘存储空间,还有无法预测,无法控制的风险. 1. Satoshi_Nakam ...

  5. 「CF55D」Beautiful numbers

    传送门 Luogu 解题思路 毒瘤数位DP,发现一个前缀我们只需要记录它对 \(\operatorname{lcm}(1,2,3,\cdots,9)=2520\) 取模的值即可,所以我们在 DP 时记 ...

  6. jenkins构建python项目时,提示python不是内部或外部命令的解决办法

    1.回到 Jenkins 首页,点击 “构建执行状态”或“Build Executor Status” ,右则会列出本机信息. 完美解决!!!

  7. 记一次菜鸡的低级折腾--WordPress get Webshell(后台文件编辑插马)

    挺简单的一个测试站,开始思路错了,一直去网上找WordPress的漏洞,看有没有什么能利用的,未果,因为这个测试站有些地方并不完善,有的漏洞利用不了,菜鸡的我连弱口令都没猜对,没知识就是这么悲哀. 下 ...

  8. 十二 事务&安全问题&隔离级别

    事务 transaction,指一组操作,里面包含许多单一逻辑,只要一个逻辑没有执行成功,那么都算失败.所有的数据都回到最初的状态(回滚). 为什么要有事务? 确保逻辑的成功,例子:银行转账 事务针对 ...

  9. loadrunner11完整卸载

    1.在控制面板中卸载掉loadrunner11的程序 2.删除loadrunner11安装目录 3.删除C盘(和安装目录下)   wlrun.*和vugen.* 4.删除回收站 5.清除注册表(运行r ...

  10. is application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem

    最近试着了解 c++,接触到了QT,写了一个测试程序,在开发环境下正常后移到非开发环境,报错 网上找资料说是少了platforms文件夹中的dll,把里面所有的dll复制到执行程序目录,还是提示,继续 ...