dingdanquanliucheng/deploy/修复图片404问题指南.md

139 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 修复司机端图片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
```