最近学习使用了springmvc的文件上传和下载,下面将记录一下使用的要点。
- 首先将需要的jar包加到项目的web-inf下的lib,其中包括两个jar包:commons-fileupload-1.2.2.jar和commons-io-2.4.jar。
- 文件的上传需要在spring的配置文件中(我这里命名为springmvc.xml)配置好相应bean标签,配置如下:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件最大尺寸15MB -->
<property name="maxUploadSize">
<value>15683640</value>
</property>
</bean>
以上简单配置好之后,接下来就可以进行文件上传了。
一、文件上传
首先,进行文件上传要在页面的提交表单中设置enctype=”multipart/form-data”,即如下:
<form method="post" action="upload.action" enctype="multipart/form-data">
</form>
接着就是响应的controller方法,以下:
@RequestMapping("/upload.action")
public void songUpLoad(Model model, MultipartFile file_path, SongUploadVo songUploadVo) throws Exception {
if (file_path != null && file_path.getOriginalFilename() != null && file_path.getOriginalFilename().length() > 0) {
// 获取文件原始名称,用于获取后缀名
String filename = file_path.getOriginalFilename();
// 设置存储文件的物理路径,这里我把它放在tomcat的webapps下的ROOT的一个自己创建的MP3文件夹下
String tomcat_path = System.getProperty("catalina.home");
String pic_path = tomcat_path + "\\webapps\\ROOT\\mp3\\";
// 设置文件新名称,随机数字+后缀名
String newFileName = UUID.randomUUID() + filename.substring(originalFilename.lastIndexOf("."));
// 创建新文件,路径+文件名称
File newFile = new File(pic_path + newFileName);
// 把文件从内存写入磁盘
file_path.transferTo(newFile);
}
}
注意:String tomcat_path = System.getProperty(“catalina.home”);这个是获取自己tomcat的路径,需要在系统变量中配置CATALINA_HOME。
二、文件下载
至于文件下载,简单一点。
@RequestMapping("/download.action")
public ResponseEntity<byte[]> SongDownload(String file_name, String path) throws Exception {
//1.创建该文件
File file=new File(path);
//2.设置响应格式
HttpHeaders headers = new HttpHeaders();
String fileName=new String(file_name.getBytes("UTF-8"),"iso-8859-1");//转码
headers.setContentDispositionFormData("attachment", fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}
非常简单就实现了。
最后,多文件的上传还没有用到,找个风和日丽的下午再试试….