一个简单的springmvc实现的上传功能,主要代码如下
<form action="<%=contextPath%>/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="上传"/>
</form>
@RequestMapping("/upload")
public String uploadFile(HttpServletRequest request, Model model, MultipartFile
file) throws Exception {
String orginalname = file.getOriginalFilename();
String newfilename = UUID.randomUUID() +
orginalname.substring(orginalname.indexOf("."));
String path =
request.getSession().getServletContext().getRealPath("/upload");
System.out.println("path: " + path);
file.transferTo(new File(path + "/" + newfilename));
model.addAttribute("image", newfilename);
model.addAttribute("message", "上传成功! ");
return "success";
}
工程ssmtest下有upload目录,请求路径 http://localhost:8080/ssmtest/upload的时候,请求会被重定向为http://localhost:8080/ssmtest/upload/, POST请求方法也变成了GET方法,直接导致本来通过post方式传到后端的MultipartFile对象,变成get方式后直接丢失了,后端获取不到MultipartFile对象了,请大牛解惑,不甚感谢。(只有目录跟请求路径重名才会这样,目录名改掉后,/upload不会重定向,请求方式也不会变化)