export const ALLOWED_IMAGE_TYPES = ['image/jpeg', 'image/jpg', 'image/png', 'image/bmp'] /** 读取多个文件为 data URL,返回解析完的数组。 */ export function readFilesAsDataUrls(files: Blob[] | FileList): Promise { const list = Array.from(files) return Promise.all( list.map( (file) => new Promise((resolve, reject) => { const reader = new FileReader() reader.onload = () => resolve(String(reader.result || '')) reader.onerror = () => reject(reader.error || new Error('读取文件失败')) reader.readAsDataURL(file) }), ), ) } /** 从剪贴板读取图片文件。 */ export async function pasteClipboardImages(): Promise { try { const items = await navigator.clipboard.read() const images: Blob[] = [] for (const item of items) { if (item.types.includes('image/png')) { images.push(await item.getType('image/png')) } else if (item.types.includes('image/jpeg')) { images.push(await item.getType('image/jpeg')) } } return images } catch (err) { console.warn('粘贴图片失败:', err) return [] } }