# 本地开发环境远程上传配置指南 ## 问题描述 本地开发环境上传图片到远程服务器后,返回的URL是 `http://localhost:8089/uploads/...`,导致图片无法加载(404错误)。 ## 原因分析 **数据流程:** ``` 前端(5173) → 本地后端(8089) → 远程服务器(px.ddn-ai.cloud) ↓ 保存文件成功 ↓ 返回URL: localhost:8089 ❌ (错误) ``` **问题根源:** - 远程服务器的配置文件中 `url-prefix` 设置为 `localhost:8089` - 远程服务器返回的URL使用的是它自己的配置 - 本地后端直接转发了远程服务器的响应 ## 解决方案 ### 1. 本地开发环境配置(已完成✅) **文件:** `peidu/backend/src/main/resources/application.yml` ```yaml file: upload: mode: remote # 使用远程上传模式 remote: url: https://px.ddn-ai.cloud/api/file/upload/direct timeout: 30 url-prefix: https://px.ddn-ai.cloud/uploads/ ``` **文件:** `peidu/backend/src/main/resources/application-dev.yml` ```yaml file: upload: mode: remote # 使用远程上传模式 local-path: C:/peidu/uploads/ remote: url: https://px.ddn-ai.cloud/api/file/upload/direct timeout: 30 url-prefix: https://px.ddn-ai.cloud/uploads/ allowed-types: jpg,jpeg,png,gif,bmp,webp,pdf,doc,docx,xls,xlsx max-size: 10 ``` ### 2. 远程服务器配置(需要修改⚠️) **登录远程服务器:** ```bash ssh root@px.ddn-ai.cloud ``` **修改配置文件:** 找到远程服务器上的配置文件(通常在项目目录下): - `application.yml` - `application-prod.yml` 或 `application-dev.yml` **修改为:** ```yaml file: upload: mode: local # 远程服务器使用本地保存模式 local-path: /www/wwwroot/px.ddn-ai.cloud/Image/ url-prefix: https://px.ddn-ai.cloud/uploads/ # ⚠️ 关键:必须是远程地址 allowed-types: jpg,jpeg,png,gif,bmp,webp,pdf,doc,docx,xls,xlsx max-size: 10 ``` **重启远程服务器后端:** ```bash # 停止旧进程 ps aux | grep java kill -9 <进程ID> # 启动新进程 cd /path/to/backend nohup java -jar peidu-backend-1.0.0.jar & ``` ### 3. Nginx配置(确认) 确保远程服务器的 Nginx 配置正确映射 `/uploads/` 路径: ```nginx location /uploads/ { alias /www/wwwroot/px.ddn-ai.cloud/Image/; autoindex off; } ``` ## 配置对比表 | 环境 | mode | local-path | url-prefix | 说明 | |------|------|-----------|-----------|------| | 本地开发 | remote | C:/peidu/uploads/ | https://px.ddn-ai.cloud/uploads/ | 上传到远程 | | 远程服务器 | local | /www/wwwroot/px.ddn-ai.cloud/Image/ | https://px.ddn-ai.cloud/uploads/ | 本地保存 | ## 验证步骤 ### 1. 验证远程服务器配置 在远程服务器上运行: ```bash curl -X POST https://px.ddn-ai.cloud/api/file/upload/direct \ -F "file=@test.jpg" ``` 应该返回: ```json { "code": 200, "message": "上传成功", "data": { "fileName": "20260126_xxx.jpg", "fileUrl": "https://px.ddn-ai.cloud/uploads/20260126_xxx.jpg", "fileSize": "12345", "fileType": "jpg" } } ``` **关键检查:** `fileUrl` 必须是 `https://px.ddn-ai.cloud/uploads/...` ### 2. 验证本地上传 在本地管理后台上传图片,检查: 1. 上传成功 2. 返回的URL是 `https://px.ddn-ai.cloud/uploads/...` 3. 图片可以正常显示 ### 3. 验证图片访问 直接在浏览器访问: ``` https://px.ddn-ai.cloud/uploads/20260126_xxx.jpg ``` 应该能正常显示图片。 ## 常见问题 ### Q1: 远程服务器配置文件在哪里? 通常在以下位置之一: - `/www/wwwroot/px.ddn-ai.cloud/backend/application.yml` - `/opt/peidu/application.yml` - JAR包同目录下的 `application.yml` ### Q2: 如何查看远程服务器的配置? ```bash # 查找配置文件 find / -name "application*.yml" 2>/dev/null # 查看配置内容 cat /path/to/application.yml | grep -A 10 "file:" ``` ### Q3: 修改配置后需要重启吗? 是的,必须重启远程服务器的后端服务才能生效。 ### Q4: 如何确认配置生效? 查看远程服务器启动日志: ```bash tail -f nohup.out ``` 应该看到: ``` ======================================== 📁 文件上传配置初始化 上传模式: local 本地保存路径: /www/wwwroot/px.ddn-ai.cloud/Image/ ✅ 本地保存模式 访问URL前缀: https://px.ddn-ai.cloud/uploads/ ======================================== ``` ## 总结 **核心要点:** 1. 本地开发环境:`mode=remote`,上传到远程服务器 2. 远程服务器:`mode=local`,保存到本地磁盘 3. 远程服务器的 `url-prefix` 必须是 `https://px.ddn-ai.cloud/uploads/` 4. 修改远程配置后必须重启服务 **修改完成后的效果:** ``` 前端 → 本地后端(remote模式) → 远程服务器(local模式) ↓ 保存到 /www/wwwroot/.../Image/ ↓ 返回 https://px.ddn-ai.cloud/uploads/xxx.jpg ✅ ↓ 前端可以正常加载图片 ``` ## 日期 2026-01-26