springboot中文件上传到本地

打印 上一主题 下一主题

主题 1003|帖子 1003|积分 3009

文件上传的业务是我们经常遇到的,那么在spring中该怎么处置惩罚这个业务呢?
文件上传三个底子



  • <input type="file" name="image">
  • enctype="multipart/form-data" 这里必须是这个类型,否则上传不了,默认的是application/x-www-form-urlencoded只能上传文本格式的文件。不能用于发送文件
  • action="/api/upload" method="post"
  1. <!DOCTYPE html>
  2. <head>
  3.     <meta charset="UTF-8">
  4.     <title>Hello World</title>
  5. </head>
  6. <body>
  7.    <form action="/api/upload" method="post" enctype="multipart/form-data">
  8.        <input type="text" name="name">
  9.        <input type="text" name="age">
  10.        <input type="file" name="image">
  11.        <input type="submit" value="Submit">
  12.    </form>
  13. </body>
  14. </html>
复制代码

接口处置惩罚

  1. package com.itheima.controller;
  2. import com.itheima.pojo.Result;
  3. import lombok.extern.slf4j.Slf4j;
  4. import org.springframework.web.bind.annotation.PostMapping;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import org.springframework.web.multipart.MultipartFile;
  8. import java.io.File;
  9. import java.io.IOException;
  10. @Slf4j
  11. @RestController
  12. @RequestMapping("/upload")
  13. public class UploadController {
  14.     @PostMapping
  15.     public Result upload(String name, Integer age, MultipartFile image) throws Exception {
  16.         log.info("文件上传成功 {},{},{}",name,age,image);
  17.         String originalFilename = image.getOriginalFilename();
  18.         image.transferTo(new File("D:\\360Downloads\"+originalFilename));
  19.         return Result.success();
  20.     }
  21. }
复制代码
如许,我们就能在D:\360Downloads中看到上传的文件了



文件名优化


假如我们直接利用上传的文件名,会导致同名的被覆盖,造成文件的丢失
  1. @PostMapping
  2.     public Result upload(String name, Integer age, MultipartFile image) throws Exception {
  3.         log.info("文件上传成功 {},{},{}",name,age,image);
  4.         String originalFilename = image.getOriginalFilename();
  5.         int index = originalFilename.lastIndexOf(".");
  6.         String extname = originalFilename.substring(index);
  7.         String filename = UUID.randomUUID().toString() + extname;
  8.         image.transferTo(new File("D:\\360Downloads\"+filename));
  9.         return Result.success();
  10. }
复制代码
  1. # 配置单个文件上传大小限制
  2. spring.servlet.multipart.max-file-size=10MB
  3. # 配置单个请求最大大小的限制,一次请求中是可以上传多个文件
  4. spring.servlet.multipart.max-request-size=100MB
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表