SprintBoot 文件上传
1.单文件上传。
STS直接新建基于springboot web的项目,然后新建一个FileUploadController.java类用于写upload上传接口逻辑和upload.html上传页面
上代码:
FileUploadController.java
package com.example.demo.controller; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @RestController public class FileUploadController { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); @PostMapping("/upload") public String upload(MultipartFile uploadFile, HttpServletRequest req) { String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/"); System.out.print("realPath===>"+realPath); 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.indexOf('.'), oldName.length()); try { uploadFile.transferTo(new File(folder, newName)); String filePath = req.getScheme() + "://"+req.getServerName()+":"+req.getServerPort()+"/uploadFile/"+format+"/"+newName; return filePath; }catch (IOException e) { // TODO: handle exception e.printStackTrace(); } return "上传失败!"; } }
upload.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>UpdateFileDemo</title> </head> <body> <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="uploadFile" value="请选择文件" /> <input type="submit" value="上传" /> </form> </body> </html>
编译运行,浏览器输入 localhost:8080/upload.html 查看效果:
选择文件,点击上传按钮
看,上传成功了。直接把图片地址复制到浏览器上,可以直接看到我们刚才上传的图片。
OK,上传单文件大功告成~
springboot上传默认有大小限制,如果我们要上传大文件,怎么办呢?
很简单,我们需要在项目配置文件中添加:
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB
注意:这两句都必须同时添加,不然上传大小设置无效,这时我们就能够上传大文件了。
2.多文件上传
多文件上传之需要修改两处代码:
(1)在上传页面upload.html中的<input type="file" 中添加属性multiple。
(2)修改控制器,代码如下:
@PoseMapping("/uploads") public String uplod(MultipartFile[] uploadFiles, HttpServletRequest req){ //遍历uploadFiles数组分别存储 }
控制器里边的核心逻辑和单文件上传是一样的,只是多一个遍历的步骤。
posted on 2020-03-16 21:40 atomgame的记事本 阅读(167) 评论(0) 收藏 举报