使用springmvc提供的文件上传方式:
首先需要在springmvc.xml中配置文件解析器:
<!-- 配置文件解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760"></property>
</bean>
注意:文件解析器的id是制定了的:multipartResolver,不能填其他值。
maxUploadSize是文件上传最大值。
jsp页面:
<form action="file/upload2" method="post" enctype="multipart/form-data">
<input type="file" name="upload" ><br>
<input type="submit" value="上传">
</form>
form表单的enctype属性填:multipart/form-data
方法:
@RequestMapping("/upload2")
public String upload2(HttpServletRequest request,MultipartFile upload) throws Exception, IOException{
//上传的位置
String path = request.getSession().getServletContext().getRealPath("/uploads/");
File file=new File(path);
if(!file.exists()){//如果目录不存在就创建
file.mkdirs();
}
//获取上传文件的名称
String filename=upload.getOriginalFilename();
//使文件名唯一
String string = UUID.randomUUID().toString();//生成随机字符串
filename=string+filename;
//上传文件
upload.transferTo(new File(path, filename));
return "success";
}
MultipartFile类型的参数名要与上面jsp表单中input type=“file” name=“upload"的id一致
如果在获取绝对路径时(上面的/uploads/)后面加了”/",那么在使文件名唯一时拼接字符串就不需要在filename前拼接+"/"+
String path = request.getSession().getServletContext().getRealPath("/uploads/");
filename=string+filename;
效果:
点击上传跳转页面:
最后找到上传的图片(附路径)