springmvc文件上传,底层使用commons-fileupload.我们使用的时候就需要把fileupload的依赖导入到工程中
1.文件上传三要素:
1. 提供文件选择框:<input type="file" name="自定义名字">
2. 表单提交方式必须为:method="post"
3. 表单的enctype属性必须为:"multipart/form-data"
2 springMVC框架完成文件上传:
- 在springmvc.xml中配置文件解析器,注意文件解析器的id是固定值
- 在Controller中,在方法参数上中提供一个 MultipartFile 类型的参数 , 参数名字为 input标签name属性
- 在方法中调用MultipartFile 的api进行获取上传文件的内容(例如:文件名字,流,)
<form action="${pageContext.request.contextPath}/upload/test1" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="username"><br>
用户文件:<input type="file" name="ff"><br>
<input type="submit" value="保存">
</form>
<!--
配置文件解析器
id必须为:multipartResolver
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置一次上传总的大小 单位byte-->
<property name="maxUploadSize" value="5201314"/>
<!--设置每个文件最大大小-->
<property name="maxUploadSizePerFile" value="2501314"/>
</bean>
@Controller
@RequestMapping("upload")
public class G_UploadController {
@PostMapping("test1")
@ResponseBody
public String test1(MultipartFile ff,String username) throws IOException {
System.out.println(username);
//指定保存文件的目录
File dirFile = new File("e:/upload");
if (!dirFile.exists()) {
dirFile.mkdirs();
}
//保存文件
if (ff!=null) {
//获取文件名称
String filename = ff.getOriginalFilename();
//设置随机名称
filename = UUID.randomUUID().toString()+"_"+filename;
//保存文件
ff.transferTo(new File(dirFile,filename));
}
return "success~~~";
}
}
多文件上传
<form action="${pageContext.request.contextPath}/upload/test2" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="username"><br>
用户文件1:<input type="file" name="ff"><br>
用户文件2:<input type="file" name="ff"><br>
用户文件3:<input type="file" name="ff"><br>
<input type="submit" value="保存">
</form>
@PostMapping("test2")
@ResponseBody
public String test2(MultipartFile[] ff, String username) throws IOException {
System.out.println(username);
//指定保存文件的目录
File dirFile = new File("e:/upload");
if (!dirFile.exists()) {
dirFile.mkdirs();
}
if (ff != null && ff.length > 0) {
for (MultipartFile mf : ff) {
//保存文件
//获取文件名称
String filename = mf.getOriginalFilename();
//设置随机名称
filename = UUID.randomUUID().toString() + "_" + filename;
//保存文件
mf.transferTo(new File(dirFile, filename));
}
}
return "success~~~";
}