栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot实现文件上传

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot实现文件上传

其实这里涉及一个上传文件大小的限制,这个我等会再说

话不多说,咱们直接上Demo 就从控制层开始吧

(代码截图也封上 方便如果这种的小菜鸡阅读)

(代码也整过来吧 方便咱们copy 到时候直接改就行了)


@PostMapping(value = "/import", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}, produces = "application/json;" +
"charset=UTF-8")
public CommonResponse uploadFile(
@RequestParam(value = "file") MultipartFile file) throws UnsupportedEncodingException {
return CommonResponse.success(colophonService.uploadFile(file));
}

  • Service层
  • String uploadFile(MultipartFile file);
  • 实现类
  • @Value("${upload.version.path}")
    private String realPath;
  • @Value注解将变量进行自动注入 (这里注入的这个其实是我要把文件上传到的地方,因为只是个Demo,所以我就让他传到Windows好了,Linux同理)它在配置文件里是这样的,哦对了忘了告诉你这个格式是.properties文件
  • 正在上传…重新上传取消
  • 实现方法,它来了(代码截图)
  • 代码
  • @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Error.class, Exception.class})
    public String uploadFile(MultipartFile file) {
    File targetFile = new File(realPath);//获取指定路径 也就是咱们刚说的要上传的位置
    if
    (!targetFile.exists()) {//如果指定文件夹不存在
    targetFile.mkdirs();//创建文件夹
    }
    // 原文件名称 file.getOriginalFilename()
    // 从父路径名字符串和子路径名字符串创建新的 File实例。这个File方法的话 就自己去看源码吧

    File upload = new File(realPath, file.getOriginalFilename());
    try {
    //InputStream和File相互转化
    org.apache.commons.io.FileUtils.copyInputStreamToFile(file.getInputStream(), upload);
    } catch (Exception e) {
    log.info("导入失败", e);
    }
    return file.getOriginalFilename();
    }
  • 到这里也就执行成功了,但是在上面咱说了 这个是有文件大小限制的,如果上传文件过大,那肯定会报异常啦,别急我告诉你这玩意咋整
  • 1、首先咱们要在配置文件里配置一下文件可接收到的大小限制
  • multipart.maxFileSize=2000MB
    multipart.maxRequestSize=2500MB(这是我所使用的SpringBoot版本)
  • 这里涉及一个相关SpringBoot版本的位置格式
  • Spring Boot 1.3.x或者之前
  • multipart.maxFileSize=100Mb

    multipart.maxRequestSize=1000Mb

    Spring Boot 1.4.x

    spring.http.multipart.maxFileSize=100Mb

    spring.http.multipart.maxRequestSize=1000Mb

    Spring Boot 2.0之后

    spring.servlet.multipart.max-file-size=100MB

    spring.servlet.multipart.max-request-size=1000MB

    当你配置完之后启动项目调用方法会发现(⊙o⊙)…卧槽!怎么还不行,别急你在启动类再加个东西试试呢?

    @Bean
    public MultipartConfigElement multipartConfigElement(@Value("${multipart.maxFileSize}")String maxFileSize, @Value("${multipart.maxRequestSize}") String maxRequestSize) {
    MultipartConfigFactory factory = new MultipartConfigFactory();
    factory.setMaxFileSize(DataSize.parse(maxFileSize));
    factory.setMaxRequestSize(DataSize.parse(maxRequestSize));
    return factory.createMultipartConfig();
    }

    到这里也就完事了,当然可能也有些像我一样的菜鸡不知道这种上传文件应该如何测试,那么咱们就用postman来唠一唠吧

    作者也是个刚入行的小垃圾 写的不对的地方请各位哥哥们批评指正

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/890620.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号