feat(media): support external https image urls for entities
Allow entities to use full https:// URLs as their image path Validate external URLs to prevent http://, data:, or credentials Update API responses and frontend components to handle external sources
This commit is contained in:
@@ -379,7 +379,7 @@
|
||||
- 物品图标
|
||||
- 栖息地
|
||||
- 上传图片只支持 `png`、`jpg/jpeg`、`webp`、`gif`。
|
||||
- 上传图片由服务端保存到受控上传目录,不接受任意外部 URL,也不信任客户端传入的最终文件路径。
|
||||
- 上传图片由服务端保存到受控上传目录,不信任客户端传入的最终文件路径;实体当前图片也可引用完整的 `https://` 外部图片 URL,但不接受 `http://`、`data:`、`javascript:` 或带用户名 / 密码的 URL。
|
||||
- 上传路径由服务端按实体类型、实体展示名称和时间戳生成,格式示例:
|
||||
- `items/甜蜜蜜/20260501002000.png`
|
||||
- `pokemon/Pikachu/20260501002000.png`
|
||||
@@ -395,7 +395,8 @@
|
||||
- `byte_size`
|
||||
- `created_by_user_id`
|
||||
- `created_at`
|
||||
- 实体表只保存当前显示图片的相对路径;历史上传记录不会因为切换当前图片而删除。
|
||||
- 实体表保存当前显示图片引用:上传图片相对路径、受支持静态资源路径或完整 `https://` 外部图片 URL;历史上传记录不会因为切换当前图片而删除。
|
||||
- 公共实体 API 返回图片时包含当前图片引用 `path` 和可直接展示的 `url`;完整外部 URL 的 `path` 和 `url` 相同,不再拼接受控上传或静态资源域名。
|
||||
- 公共 API 对外返回图片上传历史只包含:`id`、`path`、`url`、`uploadedAt` 和上传者必要署名 `uploadedBy`;不返回 `entity_name`、原始文件名、MIME、文件大小、服务器绝对文件路径或内部存储元数据。若编辑接口确需实体关联,只能在受保护编辑接口返回 `entityId`。
|
||||
- 图片上传本身不直接改变实体内容;用户仍需保存实体编辑表单后,当前图片选择才成为实体行为并写入现有编辑审计。
|
||||
- Docker 运行时上传目录必须使用 volume 持久化,避免重新 build 后丢失用户上传图片。
|
||||
|
||||
Reference in New Issue
Block a user