文件上传报错:Required request part 'file' is not present

如下使用CommonsMultipartResolver:

@Configuration
public class FileConfig {@Resourceprivate Environment env;/*** @Description: 临时文件存放的目录* @param null* @return: null* @Author Tian GuoPing* @Date: 2021/9/27 10:30* @Version 1.0**/public String getTempFileDir(){return env.getProperty("upload.temp.filepath");}/*** @Description: 文件最终存放的目录* @param null* @return: null* @Author Tian GuoPing* @Date: 2021/9/27 10:30* @Version 1.0**/public String getFileDir(){return env.getProperty("upload.filepath");}/*** @Description: CommonsMultipartResolver文件解析器,默认是StandardServletMultipartResolver* @param null* @return: null* @Author Tian GuoPing* @Date: 2021/9/27 10:30* @Version 1.0**/@Bean(name = "multipartResolver")public MultipartResolver getFileResolver(){CommonsMultipartResolver resolver = new CommonsMultipartResolver();resolver.setDefaultEncoding(env.getProperty("upload.encode"));long maxSize = env.getProperty("upload.maxfilesize",Long.class);resolver.setMaxUploadSize(maxSize);try {String path = env.getProperty("upload.temp");FileSystemResource resource = new FileSystemResource(path);resolver.setUploadTempDir(resource);} catch (IOException e) {e.printStackTrace();}return resolver;}
}

controller如下:

package com.base.fawu.controller;import com.base.fawu.bean.Result;
import com.base.fawu.config.FileConfig;
import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.*;/*** *@Author:蛋炒饭* *@Date:2021/9/27* *@Time:9:22* *@Year:2021* *@Month:09* 文件上传和下载**/
@RestController
@RequestMapping("/api")
public class FileOperatorController {@Resourceprivate FileConfig fileConfig;/*** @Description: 多文件上传* @param files 文件* @return: null* @Author Tian GuoPing* @Date: 2021/9/27 9:57* @Version 1.0**/@PostMapping("/files")public Result uploadFiles(@RequestParam("files") MultipartFile[] files) throws IOException {Result rs = null;// 使用日期来分类管理上传的文件String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());//先存临时文件File folder = new File( fileConfig.getRootDir()+fileConfig.getTempFileDir() + format+"/");if (!folder.exists()) {folder.mkdirs();}StringBuilder paths = new StringBuilder();for (MultipartFile file : files) {if(file.isEmpty()){paths.append(",");continue;}String oldName = file.getOriginalFilename();String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."));File newFile = new File(folder, newName);//保存文件file.transferTo(newFile);paths.append(fileConfig.getTempFileDir()+ format+"/"+newName+",");}rs = Result.ok();Map<String,Object> data = new HashMap(4);data.put("paths",paths);rs.setData(data);return rs;}/*** @Description: 单文件上传* @param file 文件* @return: null* @Author Tian GuoPing* @Date: 2021/9/27 9:57* @Version 1.0**/@PostMapping("/file")public Result uploadFile(@RequestParam MultipartFile file) throws Exception{// 使用日期来分类管理上传的文件String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date());//先存临时文件File folder = new File( fileConfig.getRootDir()+fileConfig.getTempFileDir() + format+"/");if (!folder.exists()) {folder.mkdirs();}if(file==null||file.isEmpty()){return Result.error("文件不可以是空");}String oldName = file.getOriginalFilename();String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."));File newFile = new File(folder, newName);//保存文件file.transferTo(newFile);Result rs = Result.ok();Map<String,Object> data = new HashMap<>();data.put("path",fileConfig.getTempFileDir() + format+"/"+newName);rs.setData(data);return rs;}/*** @Description: 文件下载* @param fileName 指定下载文件名字* @param downloadFilePath 下载文件相对根目录路径* @return: null* @Author Tian GuoPing* @Date: 2021/9/27 11:08* @Version 1.0**/@GetMapping("/file")public ResponseEntity downloadFile(String fileName, String downloadFilePath) throws IOException {//下载文件,简单new个文件File downloadFile = new File(fileConfig.getRootDir()+downloadFilePath);String downloadFileName = "";if(fileName!=null){downloadFileName = fileName+downloadFilePath.substring(downloadFilePath.lastIndexOf("."));}else{downloadFileName = downloadFile.getName();}HttpHeaders headers = new HttpHeaders();//下载显示的文件名,并解决中文名称乱码问题downloadFileName = new String(downloadFileName.getBytes("UTF-8"),"iso-8859-1");//通知浏览器以attachment(下载方式)打开headers.setContentDispositionFormData("attachment", downloadFileName);//applicatin/octet-stream: 二进制流数据(最常见的文件下载)headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);// 使用下org.apache.commons.io.FileUtils工具类byte[] bytes = FileUtils.readFileToByteArray(downloadFile);return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.CREATED);}
}

application.xml配置如下:

#文件的根目录
upload.root=e:/file
#文件保存的临时目录
upload.temp.filepath=/temp/
#文件最后存的目录
upload.filePath=/upload/
#上传的时候产生临时文件的位置,临时文件上传完成会自动删除
upload.temp=/tempData
upload.encode=utf-8
#限制文件大小
upload.maxfilesize=5400000

postman测试:

后台报错信息:

org.springframework.web.multipart.support.MissingServletRequestPartException: Required request part 'file' is not present

解决:
参考这篇文章: Springboot的文件上传接口,使用postman测试一直报Required request part ‘file’ is not present错误.
在application.xml中添加配置,干掉springboot默认的配置:

#如果自己定义multipartResolver,需要关闭springboot的文件上传的自动配置,否则接收不到文件或者报错
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration

springboot文件上传报错:Required request part ‘file‘ is not present相关推荐

  1. Springboot文件上传报错:failed to convert java.lang.String to org.springframework.util.unit.DataSize

    springboot2.1.2版本文件上传报错,我上传的是一个18M的音频,默认的配置应该是超过10M的文件就会报错,所以我将配置修改为: spring:servlet:multipart:enabl ...

  2. 文件上传参数报错 Required request part ‘file‘ is not present

    问题描述: 做文件上传时,后台报错: Required request part 'file' is not present 原因:文件名传递的参数名不一致 java代码 @PostMapping(& ...

  3. 解决Springboot文件上传报错,java.io.FileNotFoundException: D:\System\Temp\tomcat.819...00.tmp (系统找不到指定的文件。)

    Springboot文件上传,csdn上的方法无非是下面这两个: imgFile.transferTo(imageFolder); // 方法一/*** 方法二* FileUtils.copyInpu ...

  4. Postman图片上传用法以及Required request part file is not present的解决方法

     代码截图: 1.单个文件上传: Postman用法截图:  后面两个Pre_requestScript,Tests都不填. 注: 问题:       报错:400,Required request ...

  5. 关于ssm文件上传报错400,面对错误我们只能说亚麻跌,达咩,达咩哟!

    这个问题困扰了我很久,研究了很久之后发现是一些小细节问题!!太难了! 我是一开始把文件上传的控制器方法中的MultipartFile的形参定为filename,表单中input也设置为filename ...

  6. 【问题记录】tp5文件上传$_FILES有值request中file却为空

    文章目录 前言 问题 排除尝试 前端 后端 小结 前言 在整理一套php代码的时候,需要添加文件上传功能,虽说我对php不算怎么熟悉,但是我想着一个简单的文件上传其实就form表单的提交能有多麻烦,谁 ...

  7. nodejs文件上传报错总结

    语法: fs.rename(oldPath,newPath,callback) 今天在使用formidable模块做图片上传处理的时候,fs.rename方法的报了一个这样的错:cross-devic ...

  8. IIS FTP部分文件上传报错451的原因及解决方法

    最近部署一个基于IIS7的ftp服务器,测试传几个文件遇到问题了,部分文件可以正常上传,但部分报错.下面与大家分享下造成的原因及解决方法 最近部署一个基于IIS7的ftp服务器,添加一个组的用户具有上 ...

  9. 金蝶多文件上传报错的处理方法

    金蝶底层封装Tomcat,如果多文件无法上传是因为没有配置. 首先找到当前域下的实例文件,我的是AAS/domains/mydomain. 然后在当前文件下找到config文件中的web.xml 最后 ...

最新文章

  1. linux系统UDP的socket通信编程
  2. 下取整函数的含义_Excel将3.14159取值为3.15或3.1415? 两个函数为你效劳,拿走不谢...
  3. 输出某个目录下的所有文件和文件夹,包括子文件夹中的内容
  4. ROS kinect:OpenNI读取深度图像与彩色图像
  5. .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
  6. java 方法 示例_Java语言环境getVariant()方法与示例
  7. 【Linux 命令】- find 命令
  8. CAN和CANOpen的关系
  9. 【C语言】写一个函数,并调用该函数求两个整数的最大公约数和最小公倍数
  10. Linux Watchdog Test Program
  11. An Useful Page Mockup Tools – Balsamiq Mockups
  12. JavaWeb项目的热部署配置
  13. 践行快乐音乐教育 郎朗The ONE全球公益钢琴盛典传递音乐力量!
  14. java编写工字鼠标光标,鼠标指针的形状及含义
  15. 硬盘的种类及运行原理
  16. A股-入门-新手该如何成功选股
  17. matplotlib.pyplot.scatter( )绘制散点图与双月形图
  18. DVWA-文件上传与文件包含
  19. 山西大学计算机学院的导师,王文剑(计算机与信息技术学院)老师 - 山西大学 - 院校大全...
  20. 美女主播即将失业?韩国首个AI女主播“金柱夏”诞生

热门文章

  1. 在服务器上放自己写的网页
  2. 【金猿产品展】诸葛用户数据分析平台(Insight)——聚焦业务场景数据应用价值挖掘,赋能精细化运营...
  3. 驰骋BPM系统-表单引擎-流程引擎 2020年大换装
  4. DC-DC 保护调试经验
  5. cad指示箭头快捷键命令_cad中箭头怎么画_cad箭头画法命令 - 学无忧
  6. python可视化库matplotlib_Python可视化库matplotlib(基础整理)
  7. 联想小新14pro锐龙版网卡rtl8852ae在ubunru18.04装网卡驱动
  8. Qt实现简单项目——打开图片
  9. Java学习笔记-多态的具体体现
  10. Qt信号和槽函数连接不成功原因