文件上传form表单注意事项!!!
/* form表单提交时注意 enctype="multipart/form-data"
是必须要加的 至于为什么请自行百度 */
<form action="接口地址" method="post" enctype="multipart/form-data">
<!-- 这是单个文件上传的input标签 也可以上传多张图片
上传多张图片的话就要用第二种 controller方法进行接收 -->
<input type="file" name="file">
<!-- 这是多个input标签 name值不同 使用第三种controller方法接收 -->
<input type="file" name="file1">
<input type="file" name="file2">
<input type="file" name="file3">
......
</form>
一、 单文、图片件上传controller
// <input type="file" name="file">
//对于单个文件上传使用的 controller
//只需要写一个 MultipartFile 即可
@RequestMapping("")
public void csdnConttroller(MultipartFile file){
//拿到 input file 标签的 name
file.getName();
try {
//拿到input流 这一步会抛出异常
InputStream in = file.getInputStream();
//拿到input流之后想怎么操作 自己说了算 想怎么上传就怎么上传
} catch (IOException e) {
e.printStackTrace();
}
}
二、多文件、图片上传controller
/* 对于多个文件上传使用的 controller
//只需要把 MultipartFile 变成数组形式接收即可
//这个方法针对 一个input标签选择多个文件
// 或者是多个input标签name是相同的值
// <input type="file" name="file">
@RequestMapping("2") */
public void newCsdn(MultipartFile[] files){
for (MultipartFile file: files) {
//拿到 input file 标签的 name
file.getName();
try {
//拿到input流 这一步会抛出异常
InputStream in = file.getInputStream();
//拿到input流之后想怎么操作 自己说了算 想怎么上传就怎么上传
} catch (IOException e) {
e.printStackTrace();
}
}
}
三、多文件、图片上传多个input标签且name值不同
//对于多个文件上传使用的 controller
//并且是多个input标签 且name值不一样
// <input type="file" name="file">
@RequestMapping("3")
public void inputFiles(HttpServletRequest request){
MultipartFile file = null;
CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if (resolver.isMultipart(request)) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Iterator<String> fileNames = multipartRequest.getFileNames();
while (fileNames.hasNext()) {
//input name字段值
String imgname = fileNames.next();
file = multipartRequest.getFile(imgname);
}
}
}