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