139 lines
3.2 KiB
Markdown
139 lines
3.2 KiB
Markdown
|
|
# 修复司机端图片404问题指南
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
|
|||
|
|
司机上传的照片返回404错误,无法在页面中渲染。
|
|||
|
|
|
|||
|
|
**错误日志示例**:
|
|||
|
|
```
|
|||
|
|
Failed to load image https://dda.gaowenbu.cn/uploads/20260627112141_xxx.png
|
|||
|
|
the server responded with a status of 404 (HTTP/1.1 404)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 问题原因
|
|||
|
|
|
|||
|
|
图片上传流程:
|
|||
|
|
1. 前端调用 `/api/files/local-upload` 上传文件
|
|||
|
|
2. 后端保存到服务器本地目录 `/tmp/order-flow-oss/local-uploads/`
|
|||
|
|
3. 返回URL格式:`https://dda.gaowenbu.cn/uploads/{filename}`
|
|||
|
|
4. Nginx代理 `/uploads/` 到后端服务
|
|||
|
|
5. 后端提供静态文件访问
|
|||
|
|
|
|||
|
|
**404错误原因**:
|
|||
|
|
- 生产服务器上的目录 `/tmp/order-flow-oss/local-uploads` 不存在
|
|||
|
|
- 目录权限不正确
|
|||
|
|
- FastAPI服务没有重启
|
|||
|
|
- Nginx配置没有生效
|
|||
|
|
|
|||
|
|
## 排查步骤
|
|||
|
|
|
|||
|
|
### 步骤1:检查目录是否存在
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 登录服务器
|
|||
|
|
ssh root@121.41.52.85
|
|||
|
|
|
|||
|
|
# 检查目录是否存在
|
|||
|
|
ls -la /tmp/order-flow-oss/local-uploads/
|
|||
|
|
|
|||
|
|
# 如果不存在,创建目录
|
|||
|
|
sudo mkdir -p /tmp/order-flow-oss/local-uploads/
|
|||
|
|
sudo chmod 755 /tmp/order-flow-oss/local-uploads/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤2:检查FastAPI服务状态
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查FastAPI服务是否运行
|
|||
|
|
ps aux | grep uvicorn
|
|||
|
|
|
|||
|
|
# 如果没有运行,重启服务
|
|||
|
|
cd /path/to/backend
|
|||
|
|
sudo systemctl restart fastapi # 或使用其他方式重启
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤3:检查Nginx配置
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查Nginx配置是否正确
|
|||
|
|
sudo nginx -t
|
|||
|
|
|
|||
|
|
# 重新加载Nginx配置
|
|||
|
|
sudo nginx -s reload
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤4:测试文件上传和访问
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 手动测试上传
|
|||
|
|
curl -X POST http://127.0.0.1:8000/api/files/local-upload \
|
|||
|
|
-H "Authorization: Bearer <your-token>" \
|
|||
|
|
-F "file=@test.jpg"
|
|||
|
|
|
|||
|
|
# 测试文件访问
|
|||
|
|
curl -I https://dda.gaowenbu.cn/uploads/test.jpg
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 修复方案
|
|||
|
|
|
|||
|
|
### 方案1:确保目录存在(推荐)
|
|||
|
|
|
|||
|
|
在服务器上执行:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 创建目录
|
|||
|
|
sudo mkdir -p /tmp/order-flow-oss/local-uploads/
|
|||
|
|
|
|||
|
|
# 设置权限
|
|||
|
|
sudo chmod 755 /tmp/order-flow-oss/local-uploads/
|
|||
|
|
sudo chown -R www:www /tmp/order-flow-oss/local-uploads/ # 假设Nginx用户是www
|
|||
|
|
|
|||
|
|
# 重启FastAPI服务
|
|||
|
|
sudo systemctl restart fastapi
|
|||
|
|
|
|||
|
|
# 重新加载Nginx
|
|||
|
|
sudo nginx -s reload
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方案2:修改上传目录(可选)
|
|||
|
|
|
|||
|
|
如果希望使用不同的目录,修改 `.env` 文件:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 编辑后端配置
|
|||
|
|
vi /path/to/backend/.env
|
|||
|
|
|
|||
|
|
# 修改 LOCAL_UPLOAD_DIR 配置
|
|||
|
|
LOCAL_UPLOAD_DIR=/var/www/uploads # 使用其他目录
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
然后创建对应目录并重启服务:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
sudo mkdir -p /var/www/uploads
|
|||
|
|
sudo chmod 755 /var/www/uploads
|
|||
|
|
sudo systemctl restart fastapi
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 验证修复
|
|||
|
|
|
|||
|
|
1. **重新上传图片**:在司机端重新上传一张照片
|
|||
|
|
2. **检查控制台**:查看是否还有404错误
|
|||
|
|
3. **验证图片显示**:确认图片可以正常显示
|
|||
|
|
4. **测试其他功能**:确保运单识别等功能正常
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **文件权限**:确保Nginx用户有权限读取上传目录
|
|||
|
|
2. **磁盘空间**:确保服务器有足够的磁盘空间
|
|||
|
|
3. **备份**:修改配置前建议备份相关文件
|
|||
|
|
4. **日志查看**:如果问题仍然存在,查看Nginx和FastAPI的日志
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看Nginx错误日志
|
|||
|
|
tail -f /www/wwwlogs/dda.gaowenbu.cn.error.log
|
|||
|
|
|
|||
|
|
# 查看FastAPI日志
|
|||
|
|
journalctl -u fastapi -f
|
|||
|
|
```
|