110 lines
2.2 KiB
Markdown
110 lines
2.2 KiB
Markdown
|
|
# 图片上传问题总结
|
|||
|
|
|
|||
|
|
## 问题现象
|
|||
|
|
|
|||
|
|
用户上传几百KB的图片时,出现错误提示:
|
|||
|
|
```
|
|||
|
|
文件大小不能超过10485760MB
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 问题分析
|
|||
|
|
|
|||
|
|
### 1. 错误信息异常
|
|||
|
|
|
|||
|
|
错误信息显示 `10485760MB`(约10TB),这明显不对。
|
|||
|
|
|
|||
|
|
实际配置:
|
|||
|
|
- `application.yml`: `max-file-size: 10MB`
|
|||
|
|
- `FileUploadConfig`: `max-size: 10`
|
|||
|
|
|
|||
|
|
计算:`10 * 1024 * 1024 = 10485760` **字节**
|
|||
|
|
|
|||
|
|
**结论**: 错误信息把字节数当成MB数显示了。
|
|||
|
|
|
|||
|
|
### 2. 可能的原因
|
|||
|
|
|
|||
|
|
#### 原因A: Spring Boot默认限制
|
|||
|
|
Spring Boot有默认的文件上传大小限制,可能在我们的检查之前就被拦截了。
|
|||
|
|
|
|||
|
|
#### 原因B: 文件实际大小超限
|
|||
|
|
虽然用户说是"几百KB",但实际文件可能更大。
|
|||
|
|
|
|||
|
|
#### 原因C: 配置未生效
|
|||
|
|
后端可能没有重启,或者配置读取有问题。
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
### 方案1: 检查实际文件大小
|
|||
|
|
|
|||
|
|
请用户提供:
|
|||
|
|
1. 上传的图片文件大小(右键→属性查看)
|
|||
|
|
2. 后端控制台的日志输出
|
|||
|
|
|
|||
|
|
### 方案2: 增加文件大小限制
|
|||
|
|
|
|||
|
|
如果确实需要上传更大的文件,修改配置:
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# application.yml
|
|||
|
|
spring:
|
|||
|
|
servlet:
|
|||
|
|
multipart:
|
|||
|
|
max-file-size: 50MB # 增加到50MB
|
|||
|
|
max-request-size: 50MB
|
|||
|
|
|
|||
|
|
file:
|
|||
|
|
upload:
|
|||
|
|
max-size: 50 # 增加到50MB
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方案3: 修复错误信息显示
|
|||
|
|
|
|||
|
|
当前代码已经是正确的:
|
|||
|
|
```java
|
|||
|
|
return Result.error("文件大小不能超过" + fileUploadConfig.getMaxSize() + "MB");
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果还是显示错误的数字,可能是其他地方的错误信息。
|
|||
|
|
|
|||
|
|
## 调试步骤
|
|||
|
|
|
|||
|
|
### 1. 查看后端日志
|
|||
|
|
|
|||
|
|
上传时,后端会输出:
|
|||
|
|
```
|
|||
|
|
=== 上传图片(智能模式) ===
|
|||
|
|
文件名: xxx.jpg
|
|||
|
|
文件大小: 123456 bytes
|
|||
|
|
上传模式: remote
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
请提供这个日志。
|
|||
|
|
|
|||
|
|
### 2. 确认文件大小
|
|||
|
|
|
|||
|
|
在Windows中:
|
|||
|
|
- 右键点击图片
|
|||
|
|
- 选择"属性"
|
|||
|
|
- 查看"大小"(字节数)
|
|||
|
|
|
|||
|
|
### 3. 测试不同大小的图片
|
|||
|
|
|
|||
|
|
- 测试1: 100KB的图片
|
|||
|
|
- 测试2: 1MB的图片
|
|||
|
|
- 测试3: 5MB的图片
|
|||
|
|
|
|||
|
|
看看哪个能成功上传。
|
|||
|
|
|
|||
|
|
## 当前状态
|
|||
|
|
|
|||
|
|
✅ 上传功能已实现
|
|||
|
|
✅ 前端可以选择文件
|
|||
|
|
✅ 请求可以发送到后端
|
|||
|
|
❌ 文件大小检查有问题
|
|||
|
|
|
|||
|
|
## 下一步
|
|||
|
|
|
|||
|
|
1. 查看后端日志,确认实际文件大小
|
|||
|
|
2. 确认是哪个检查触发的错误
|
|||
|
|
3. 根据实际情况调整配置或修复代码
|