博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot的单/多文件上传
阅读量:3945 次
发布时间:2019-05-24

本文共 3594 字,大约阅读时间需要 11 分钟。

单文件上传

1.首先创建一个SpringBoot项目并添加 spring-boot-starter-web依赖,然后在resources目录下的static目录中创建一个upload.html文件,内容如下:

    
单文件上传

一个很简单的文件上传页面,上传接口是 /upload,注意请求方法是post,enctype是 multipart/form-data

接着创建文件上传接口,代码如下:

@RestControllerpublic class FileUploadController {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/"); /** * 单文件上传 * @param uploadFile 单个文件 * @param req * @return 文件url */ @PostMapping("/upload") public String upload(MultipartFile uploadFile, HttpServletRequest req){
String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/"); String format = sdf.format(new Date()); File folder = new File(realPath + format); if (!folder.isDirectory()){
//如果当前目录不存在 folder.mkdirs(); //进行创建新目录 } String oldName = uploadFile.getOriginalFilename(); //旧名字 String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."),oldName.length()); //新名字 try {
uploadFile.transferTo(new File(folder,newName)); //保存文件 String filePath = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/uploadFile/" + format + newName; return filePath; //返回生成上传文件的访问路径 } catch (Exception e){
e.printStackTrace(); } return "上传失败!"; }}

然后运行项目,在浏览器测试输入:http://localhost:8080/upload.html 进行文件上传,如图:

在这里插入图片描述
单击上传按钮进行上传文件,上传成功后会返回上传文件的访问路径,如下图:
在这里插入图片描述
然后访问该路径就可以看到刚才上传的图片了,如下图所示:
在这里插入图片描述
我们也可以对图片上传进行一些配置,代码如下:

#是否开启文件上传支持spring.servlet.multipart.enabled=true#文件写入磁盘的阈值spring.servlet.multipart.file-size-threshold=0#上传文件的临时保存位置spring.servlet.multipart.location=E:\\TempImg#上传的单个文件的最大大小spring.servlet.multipart.max-file-size=5MB#多文件上传时文件的总大小spring.servlet.multipart.max-request-size=10MB#文件是否延迟解析,默认为falsespring.servlet.multipart.resolve-lazily=false

多文件上传

多文件上传与单文件上传代码基本一致,代码如下:

    
多文件上传

控制层代码如下:

@RestControllerpublic class FileUploadController {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/"); /** * 多文件上传 * @param uploadFiles 多文件数组 * @param req * @return 多文件url */ @PostMapping("/uploads") public String uploads(MultipartFile[] uploadFiles,HttpServletRequest req){
List
list = new ArrayList<>(); //生成多条文件的存储路径 if (uploadFiles.length > 0){
for (MultipartFile file:uploadFiles){
MultipartFile uploadFile = file; String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/"); String format = sdf.format(new Date()); File folder = new File(realPath + format); if (!folder.isDirectory()){
//如果当前目录不存在 folder.mkdirs(); //进行创建新目录 } String oldName = uploadFile.getOriginalFilename(); //旧名字 String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."),oldName.length()); //新名字 try {
uploadFile.transferTo(new File(folder,newName)); //上传文件 String filePath = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() + "/uploadFile/" + format + newName; list.add(filePath); } catch (Exception e){
e.printStackTrace(); } } return list.toString(); }else if (uploadFiles.length == 0){
return "请选择文件!"; } return "上传失败!"; }}

转载地址:http://diqwi.baihongyu.com/

你可能感兴趣的文章
Android的Gradle技巧 2.3从Eclipse移植应用程序ADT使用Eclipse
查看>>
昂山素季 Aung San Suu Kyi
查看>>
AI 人工智能第一课 从贝叶斯定理开始
查看>>
朴素贝叶斯python实现
查看>>
Logistic回归原理及公式推导
查看>>
并发性与并行性 并发性与并行性
查看>>
惰性求值,可组合和模块化的JavaScript
查看>>
How to Extend Django User Model 如何扩展Django用户模型
查看>>
两个行业的故事:编程语言与富裕国家和发展中国家之间的差异
查看>>
15个用于管理MySQL服务器mysqladmin命令
查看>>
服务器端I / O性能:Node,PHP,Java与Go
查看>>
多行文本编辑时,同一行编辑不同类型的字符时自动换行的问题
查看>>
如何使开机动画只播一次
查看>>
如何在平台上实现LED灯的效果?如信号灯,来短信/来电时LED动画闪烁
查看>>
restore factory属性的enable和disable
查看>>
Android LOG机制流程图
查看>>
如何在JNI中抛异常
查看>>
Android应用程序的完全退出
查看>>
Task和Activity相关的一些属性
查看>>
JAVA系统属性之user.home
查看>>