213 lines
5.2 KiB
Markdown
213 lines
5.2 KiB
Markdown
# 本地开发环境远程上传配置指南
|
||
|
||
## 问题描述
|
||
|
||
本地开发环境上传图片到远程服务器后,返回的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
|