fix: 修复商品图片管理和缓存一致性问题
- 重构 ImageUpload 组件,使用 rawUrl 跟踪原始路径 - 新增 normalizeStorageImageUrl 避免存储绝对 URL - 商品增删改后同步清除缓存和旧图片文件 - 修复秒杀活动列表商品图片为空的问题
This commit is contained in:
@@ -28,6 +28,30 @@ export const resolveImageUrl = (value?: string | null) => {
|
||||
return imageUrl.startsWith('/') ? `${baseUrl}${imageUrl}` : `${baseUrl}/${imageUrl}`
|
||||
}
|
||||
|
||||
export const normalizeStorageImageUrl = (value?: string | null) => {
|
||||
if (!value || !String(value).trim()) {
|
||||
return ''
|
||||
}
|
||||
|
||||
const imageUrl = String(value).trim()
|
||||
if (ABSOLUTE_URL_PATTERN.test(imageUrl)) {
|
||||
try {
|
||||
const parsed = new URL(imageUrl.startsWith('//') ? `http:${imageUrl}` : imageUrl)
|
||||
if (
|
||||
parsed.pathname.startsWith('/uploads/') ||
|
||||
parsed.pathname.startsWith('/images/') ||
|
||||
parsed.pathname.startsWith('/static/')
|
||||
) {
|
||||
return parsed.pathname
|
||||
}
|
||||
} catch {
|
||||
return imageUrl
|
||||
}
|
||||
}
|
||||
|
||||
return imageUrl
|
||||
}
|
||||
|
||||
export const applyFallbackImage = (event: Event) => {
|
||||
const target = event.target as HTMLImageElement | null
|
||||
if (!target) return
|
||||
|
||||
Reference in New Issue
Block a user