This commit is contained in:
freedakgmail
2025-11-24 14:02:34 +08:00
parent b7a8c9ee6e
commit 3d075c6076
941 changed files with 25613 additions and 27641 deletions
+16 -34
View File
@@ -24,32 +24,9 @@ export function PhotoGallery({ photoIds = [], onChange, readonly = false }: Phot
// 加载照片
useEffect(() => {
const loadPhotos = async () => {
const loadedPhotos = await Promise.all(
photoIds.map(async (id) => {
try {
const image = await db.images.get(id)
if (image) {
const url = URL.createObjectURL(image.blob)
return { id, url }
}
} catch (error) {
console.error('加载照片失败:', error)
}
return null
})
)
setPhotos(loadedPhotos.filter(Boolean) as { id: string; url: string }[])
}
if (photoIds.length > 0) {
loadPhotos()
}
// 清理 URL
return () => {
photos.forEach(photo => URL.revokeObjectURL(photo.url))
}
// photoIds 现在直接是 URL 数组
const loadedPhotos = photoIds.map((url) => ({ id: url, url }))
setPhotos(loadedPhotos)
}, [photoIds])
const handleUpload = async (e: React.ChangeEvent<HTMLInputElement>) => {
@@ -72,16 +49,21 @@ export function PhotoGallery({ photoIds = [], onChange, readonly = false }: Phot
const compressedFile = await imageCompression(file, options)
// 保存到数据库
const imageId = uuidv4()
await db.images.add({
id: imageId,
blob: compressedFile,
mimeType: compressedFile.type,
createdAt: new Date().toISOString(),
// 上传到服务器
const formData = new FormData()
formData.append('file', compressedFile)
const response = await fetch('/api/upload', {
method: 'POST',
body: formData,
})
newPhotoIds.push(imageId)
if (!response.ok) {
throw new Error('上传失败')
}
const { url } = await response.json()
newPhotoIds.push(url)
}
// 更新照片列表