开发者学堂课程【SpringBoot 实战教程: SpringBoot 实现批量文件上传】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/651/detail/10809
SpringBoot 实现批量文件上传
1、在之前的工程中添加 html 页面,选择三个文件。
文件1: <input type="file" name="file" />
</p>
<p>
文件2: <input type="file" name="file" />
</p>
<p>
文件3: <input type="file" name="file" />
</p>
<p>
提交的地址是 upload/batch,提交方式是post,同样是 form-data 类型。
form method= "POST" enctype= "multipart/form-data "
2、在 UploadController.java 中输入:
@RequestMapping (" /upload/batch")
路径和 html 上保持一致
@ResponseBody
返回上传成功或者上传失败,字符串类型
public String
uploadFiles (MultipartFile [ ]file, HttpServletRequest request)
名字也要保持一致,只不过需要改成数组
//便利数组,把每一个文件生成相应的服务器名称,再进行上传
@Controller
public class UploadController {
@RequestMapping (value="/upload/
batch
" , method=RequestMethod. POST)
@ResponseBody
public string uploadFile (MultipartFile[] file,
HttpServletRequest
request
)
改成数组形式
{
Try
{
//创建文件在服务器端的存放路径
String dir=request.getServletContext().getRealPath(" /upload") ;
File fileDir
=
new
File (dir) ;
if(! fileDir .exists () )
fileDir .mkdirs () ;
/ /生成文件在服务器端存放的名字,数组名加下标
for(int i=0; i<file.length; i++)
{
做循环便利即可,每循环一次就是要上传的文件
String fileSuffix=file
[1]
.getOriginalFilename (). substring (file
[1]
.getOriginalFilename () . lastIndexOf (".")
);
String
fileName=UUID. randomUUID() . toString() +fileSuffix;
File files
=
new
File(fileDir+‘’
/
‘’
+
fileName)
;
//上传
file
[1]
. transferTo (files)
;
写入到服务器端,每一个名字都要生成服务器端的名称
}
}
catch ( Exception
e)
{
e.printStackTrace () ;
Return
’’
上传失败
’’;
}
Return
’’
上传成功
’’;
}
}
3、进行批量上传,首先显示 html 页面,还需要再写一个 controller,controller 的作用是转到这个页面上。
@RequestMapping("/ index
s
")
public String toUploads()
{
return "uploads" ;
}
4、启动成功,访问 localhost:8080/indexs,出现批量上传的页面,可以上传三个文件,点击上传,上传成功。
5、查看服务器端,可以看到多了三个文件。这就是批量上传的实现。