目标:实现SpringMVC图片上传,路径可以使网络地址、本机地址
实现上传的步骤
1、导pom.xml
<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>
html页面:
表单提交中需要添加 :enctype=“multipart/form-data”
详情代码可参考
<form action="${pageContext.request.contextPath}/upload.doo"
method="post" enctype="multipart/form-data">
<!-- 正文区域 -->
<div class="panel panel-default">
<div class="panel-heading">图片上传</div>
<input type="file" name="myPic">
<input type="submit" name="submit" id="submit" value="提交">
</div>
</form>
Controller层:
package cn.hiponygou.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ModelAndView;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Controller("uploadController")
public class UploadController {
private static final String UPLOAD_PATH="F:/upload";
// 如何实现参数的封装:上传的时候,如何给出判断或者验证
// 需要:CommonsMultipartResolver ,配置springMVC容器
@RequestMapping("/upload.do")
public ModelAndView upload(@RequestParam("myPic") MultipartFile myPic) throws IOException {
// 上传之后生成新的文件名 UUID 随机数类
UUID rid= UUID.randomUUID();
long uid = rid.getLeastSignificantBits();
// 取出后缀名,进行字符串的拼接
String filename = myPic.getOriginalFilename();
// 使用String类方法
String suffix = filename.substring(filename.lastIndexOf('.'));
// 1.文件在服务器上的存储
File file=new File(UPLOAD_PATH,"/"+uid+suffix);
// throw和try...catch 有什么区别
myPic.transferTo(file);
// 2.文件地址的回显
ModelAndView mv=new ModelAndView();
mv.addObject("upload_file_path",file.getName());
mv.setViewName("upload");
// 3.页面的跳转
return mv;
}
}