173 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 编辑器图片上传问题修复
 | 
						||
 | 
						||
## 问题描述
 | 
						||
编辑器里上传的图片无法显示。
 | 
						||
 | 
						||
## 根本原因
 | 
						||
文件保存路径和静态文件URL映射不匹配。
 | 
						||
 | 
						||
## 已完成的修改
 | 
						||
 | 
						||
### 1. 后端文件保存路径 (`server/controllers/file.go`)
 | 
						||
 | 
						||
**修改前:**
 | 
						||
```go
 | 
						||
uploadDir := path.Join("uploads", datePath)
 | 
						||
```
 | 
						||
文件保存到:`server/uploads/`
 | 
						||
 | 
						||
**修改后:**
 | 
						||
```go
 | 
						||
uploadDir := path.Join("..", "uploads", datePath)
 | 
						||
```
 | 
						||
文件保存到:`项目根目录/uploads/`
 | 
						||
 | 
						||
### 2. 静态文件映射 (`server/conf/app.conf`)
 | 
						||
 | 
						||
**修改前:**
 | 
						||
```conf
 | 
						||
StaticDir = /uploads:uploads
 | 
						||
```
 | 
						||
 | 
						||
**修改后:**
 | 
						||
```conf
 | 
						||
StaticDir = /uploads:../uploads
 | 
						||
```
 | 
						||
 | 
						||
现在 `/uploads` URL 正确映射到项目根目录的 `uploads` 文件夹。
 | 
						||
 | 
						||
### 3. 前端URL拼接 (`front/src/components/WangEditor.vue`)
 | 
						||
 | 
						||
添加了更健壮的URL拼接逻辑:
 | 
						||
 | 
						||
```typescript
 | 
						||
const fileUrl = response.data.data.file_url; // /uploads/2024/01/15/xxx.jpg
 | 
						||
const baseUrl = getUploadUrl() ;
 | 
						||
 | 
						||
let fullUrl = fileUrl;
 | 
						||
if (!fileUrl.startsWith('http')) {
 | 
						||
  const base = baseUrl.replace(/\/$/, '');
 | 
						||
  const url = fileUrl.startsWith('/') ? fileUrl : '/' + fileUrl;
 | 
						||
  fullUrl = `${base}${url}`;
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
这样可以确保URL正确拼接为:`http://localhost:8080/uploads/2024/01/15/xxx.jpg`
 | 
						||
 | 
						||
## 目录结构
 | 
						||
 | 
						||
上传后文件将保存在:
 | 
						||
 | 
						||
```
 | 
						||
yunzer_go/
 | 
						||
├── server/
 | 
						||
├── front/
 | 
						||
└── uploads/                    ← 文件保存位置
 | 
						||
    ├── 2024/
 | 
						||
    │   └── 01/
 | 
						||
    │       └── 15/
 | 
						||
    │           └── 20240115143045_example.jpg
 | 
						||
```
 | 
						||
 | 
						||
## 访问URL
 | 
						||
 | 
						||
上传后可以通过以下URL访问:
 | 
						||
 | 
						||
```
 | 
						||
http://localhost:8080/uploads/2024/01/15/20240115143045_example.jpg
 | 
						||
```
 | 
						||
 | 
						||
## 如何验证
 | 
						||
 | 
						||
### 1. 上传一个图片
 | 
						||
在编辑器中使用图片上传功能上传一张图片。
 | 
						||
 | 
						||
### 2. 查看控制台日志
 | 
						||
打开浏览器开发者工具(F12),查看 Console 标签,应该看到:
 | 
						||
```
 | 
						||
图片上传成功,URL: http://localhost:8080/uploads/2024/01/15/xxx.jpg
 | 
						||
```
 | 
						||
 | 
						||
### 3. 检查文件是否保存
 | 
						||
查看项目根目录的 `uploads` 文件夹:
 | 
						||
```bash
 | 
						||
ls uploads/2024/01/15/
 | 
						||
```
 | 
						||
 | 
						||
### 4. 测试URL访问
 | 
						||
在浏览器中直接访问图片URL,应该能看到图片。
 | 
						||
 | 
						||
### 5. 检查数据库
 | 
						||
查看 `yz_files` 表中的记录:
 | 
						||
```sql
 | 
						||
SELECT file_path, file_url FROM yz_files ORDER BY upload_time DESC LIMIT 1;
 | 
						||
```
 | 
						||
 | 
						||
应该看到:
 | 
						||
- `file_path`: `uploads/2024/01/15/xxx.jpg`
 | 
						||
- `file_url`: `/uploads/2024/01/15/xxx.jpg`
 | 
						||
 | 
						||
## 重启服务器
 | 
						||
 | 
						||
修改配置后需要重启服务器才能生效:
 | 
						||
 | 
						||
```bash
 | 
						||
cd server
 | 
						||
go run main.go
 | 
						||
```
 | 
						||
 | 
						||
或者如果使用编译后的可执行文件:
 | 
						||
 | 
						||
```bash
 | 
						||
./server.exe
 | 
						||
```
 | 
						||
 | 
						||
## 如果还是看不到图片
 | 
						||
 | 
						||
### 检查清单
 | 
						||
 | 
						||
1. ✅ 服务器是否重启
 | 
						||
2. ✅ 文件是否保存到 `uploads` 目录
 | 
						||
3. ✅ 浏览器控制台是否有错误
 | 
						||
4. ✅ URL是否正确拼接
 | 
						||
5. ✅ 静态文件映射是否正确
 | 
						||
 | 
						||
### 常见问题
 | 
						||
 | 
						||
**Q: 上传后文件保存在哪里?**
 | 
						||
A: 项目根目录的 `uploads` 文件夹
 | 
						||
 | 
						||
**Q: 图片URL是什么格式?**
 | 
						||
A: `http://localhost:8080/uploads/2024/01/15/filename.jpg`
 | 
						||
 | 
						||
**Q: 为什么看不到图片?**
 | 
						||
A: 检查:
 | 
						||
- 文件是否正确保存
 | 
						||
- URL是否可访问
 | 
						||
- 浏览器控制台错误信息
 | 
						||
- 服务器是否重启
 | 
						||
 | 
						||
**Q: 如何自定义上传目录?**
 | 
						||
A: 修改 `server/controllers/file.go` 和 `server/conf/app.conf` 中的路径配置
 | 
						||
 | 
						||
## 调试建议
 | 
						||
 | 
						||
如果图片仍不显示,检查以下内容:
 | 
						||
 | 
						||
1. **查看浏览器网络请求**
 | 
						||
   - F12 → Network 标签
 | 
						||
   - 查看图片请求是否返回 200
 | 
						||
   - 如果返回 404,说明路径不对
 | 
						||
 | 
						||
2. **查看浏览器控制台**
 | 
						||
   - 查看是否有 CORS 错误
 | 
						||
   - 查看上传成功后的 URL 是什么
 | 
						||
 | 
						||
3. **查看服务器日志**
 | 
						||
   - 确认文件是否正确上传
 | 
						||
   - 确认路径是否正确
 | 
						||
 | 
						||
4. **检查文件权限**
 | 
						||
   - 确保应用有创建目录和写入文件的权限
 | 
						||
 |