初始化项目代码
This commit is contained in:
70
docs/图片URL优化更新文档.md
Normal file
70
docs/图片URL优化更新文档.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# 图片 URL 优化更新文档
|
||||
|
||||
## 概述
|
||||
本次更新优化了图片访问方式,从原来通过后端 API 代理访问改为直接通过 Nginx 静态资源访问,提高了图片加载效率。
|
||||
|
||||
## 修改内容
|
||||
|
||||
### 1. 配置文件
|
||||
- 使用配置项 `file.upload.path` 确定本地保存路径
|
||||
- 使用配置项 `file.upload.url-prefix` 确定 Nginx 访问前缀(默认为 `/files/`)
|
||||
|
||||
### 2. ImageService 接口
|
||||
- 新增 `getNginxUrlByImageId(String imageId)` 方法,用于根据图片 ID 获取 Nginx 格式的 URL
|
||||
|
||||
### 3. ImageServiceImpl 实现
|
||||
- 使用配置的 `file.upload.path` + `/img` 作为图片存储目录
|
||||
- 保存图片时返回相对路径(如 `img/xxx.jpg`)而非绝对路径
|
||||
- 修改本地读取图片逻辑,支持相对路径
|
||||
- 新增 `getNginxUrlByImageId` 方法
|
||||
- 新增 `extractFilenameFromPath` 辅助方法
|
||||
|
||||
### 4. AiChatServiceImpl 修改
|
||||
- 在保存图片后立即更新 imageMetadata 中的 url 为 Nginx 格式
|
||||
- 在 SSE 的 finish 事件中,对无 metadata 的图片也尝试生成 Nginx 格式 URL
|
||||
|
||||
### 5. ChatServiceImpl 修改
|
||||
- 查看历史记录时,将图片 URL 从 `/api/image/xxx/data` 转换为 Nginx 格式(`/files/img/xxx.jpg`)
|
||||
|
||||
## 使用示例
|
||||
|
||||
### Nginx 配置示例
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location /files/ {
|
||||
alias /path/to/upload/;
|
||||
expires 7d;
|
||||
add_header Cache-Control "public, immutable";
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://localhost:8080;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 配置文件 (application-prod.yml)
|
||||
```yaml
|
||||
file:
|
||||
upload:
|
||||
path: /opt/deploy/uploads/
|
||||
url-prefix: /files/
|
||||
```
|
||||
|
||||
## 部署说明
|
||||
1. 确保 Nginx 配置正确,`/files/` 路径指向实际的上传目录
|
||||
2. 确保应用配置文件中的 `file.upload.path` 和 `file.upload.url-prefix` 设置正确
|
||||
3. 重新构建并部署应用
|
||||
|
||||
## 兼容性
|
||||
- 保留了向后兼容,如果 Nginx 格式 URL 无法获取,会回退为原 `/api/image/xxx/data` 格式
|
||||
- 旧数据仍然可以正常访问
|
||||
|
||||
## 图片 URL 格式对比
|
||||
| 旧格式 | 新格式 |
|
||||
|--------|--------|
|
||||
| /api/image/xxx/data | /files/img/xxx.jpg |
|
||||
Reference in New Issue
Block a user