遇到问题的原因
1.客户端未正确发送文件数据:在进行文件上传时,客户端需要以正确的方式发送文件数据。请确保客户端代码中设置了正确的 enctype 属性为 "multipart/form-data",并且将文件数据正确地包装成 multipart/form-data 格式。
2.请求参数名不匹配:请确保前端表单中的文件上传字段的名称与后端接口方法中的参数名 multipartFile 一致。如果名称不一致,multipartFile 参数将无法接收到文件数据。
3.文件大小超过限制:如果上传的文件大小超过了服务器端所允许的最大限制,那么 multipartFile 参数可能会为空。你可以检查服务器端的配置,确认是否设置了适当的文件大小上线
HTML代码
<form action="file/upload" method="post" enctype="multipart/form-data">
文件上传:: <input type="file" name="files"><br>
<button type="submit">开始上传</button>
</form>
Java 后端代码
@PostMapping("/upload")
public String uploadFile(MultipartFile file) throws IOException {
//实现类为class org.springframework.web.multipart.commons.CommonsMultipartFile
/*
* 具体的实现类 为CommonsMultipartFile
*
* */
System.out.println("实现类为" + file.getClass());
//获取上传文件的名称
String filename = file.getOriginalFilename();
//往磁盘里进行存储 并准备磁盘的名称
String filepath = "D:/mywebapps/download/";
//根据其日期为其分类
String formatPath = new SimpleDateFormat("yyyy/MM/dd/").format(new Date());
String path = filepath + formatPath;
//进行判断 如果 不存在就创建 如果存在就不创建 file 其含义为创建文件夹对象
File dirFile = new File(path);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
String uuid = UUID.randomUUID().toString();
//substring 从 最右边一个.开始到最后结尾
String type = filename.substring(filename.lastIndexOf("."));
//获取
String endname = uuid + type;
//准备上传文件的路径
String realpath = path + endname;
File finalFile = new File(realpath);
if (!finalFile.exists()) {
file.transferTo(finalFile);
}
// 上传完毕 重定向到首页
return "redirect:/";
}
解决方式
文件上传:: <input type="file" name="files"><br>
public String uploadFile(@RequestParam(value = "files") MultipartFile filem) throws IOException {
其中的标签中name的属性和形参名要一一对应, 不对应的化会出现 MultipartFile 的情况
解决办法
1. 修改形参中的参数名
2 是可以根据@RequestParam 来修改参数的名称
(@RequestParam(value = "files") MultipartFile filem)