文件上传的业务是我们经常遇到的,那么在spring中该怎么处置惩罚这个业务呢?
文件上传三个底子
- <input type="file" name="image">
- enctype="multipart/form-data" 这里必须是这个类型,否则上传不了,默认的是application/x-www-form-urlencoded只能上传文本格式的文件。不能用于发送文件
- action="/api/upload" method="post"
- <!DOCTYPE html>
- <head>
- <meta charset="UTF-8">
- <title>Hello World</title>
- </head>
- <body>
- <form action="/api/upload" method="post" enctype="multipart/form-data">
- <input type="text" name="name">
- <input type="text" name="age">
- <input type="file" name="image">
- <input type="submit" value="Submit">
- </form>
- </body>
- </html>
复制代码
接口处置惩罚
- package com.itheima.controller;
- import com.itheima.pojo.Result;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import java.io.File;
- import java.io.IOException;
- @Slf4j
- @RestController
- @RequestMapping("/upload")
- public class UploadController {
- @PostMapping
- public Result upload(String name, Integer age, MultipartFile image) throws Exception {
- log.info("文件上传成功 {},{},{}",name,age,image);
- String originalFilename = image.getOriginalFilename();
- image.transferTo(new File("D:\\360Downloads\"+originalFilename));
- return Result.success();
- }
- }
复制代码 如许,我们就能在D:\360Downloads中看到上传的文件了
文件名优化
假如我们直接利用上传的文件名,会导致同名的被覆盖,造成文件的丢失
- @PostMapping
- public Result upload(String name, Integer age, MultipartFile image) throws Exception {
- log.info("文件上传成功 {},{},{}",name,age,image);
- String originalFilename = image.getOriginalFilename();
- int index = originalFilename.lastIndexOf(".");
- String extname = originalFilename.substring(index);
- String filename = UUID.randomUUID().toString() + extname;
- image.transferTo(new File("D:\\360Downloads\"+filename));
- return Result.success();
- }
复制代码- # 配置单个文件上传大小限制
- spring.servlet.multipart.max-file-size=10MB
- # 配置单个请求最大大小的限制,一次请求中是可以上传多个文件
- spring.servlet.multipart.max-request-size=100MB
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |