选图成功上传bug修复

This commit is contained in:
2026-07-12 17:39:46 +08:00
parent b7db202632
commit d8c1ac6a9e
@@ -99,17 +99,24 @@ export default function OssUploadField({
}); });
}, [useWechatPicker, needsAuth]); }, [useWechatPicker, needsAuth]);
async function uploadSelectedFile(file: File) { async function persistUpload(file: File) {
if (file.size > DEFAULT_MAX_MB * 1024 * 1024) { if (!file.size) {
const text = `文件不能超过 ${DEFAULT_MAX_MB}MB`; showUploadError('图片读取失败,请重新选择');
showUploadError(text);
return; return;
} }
if (file.size > DEFAULT_MAX_MB * 1024 * 1024) {
showUploadError(`文件不能超过 ${DEFAULT_MAX_MB}MB`);
return;
}
const result = await uploadFileToOss(file, { bizType, mediaType });
onChange?.(result.url);
}
async function uploadSelectedFile(file: File) {
setUploading(true); setUploading(true);
setError(''); setError('');
try { try {
const result = await enqueueUpload(() => uploadFileToOss(file, { bizType, mediaType })); await enqueueUpload(() => persistUpload(file));
onChange?.(result.url);
} catch (e) { } catch (e) {
showUploadError(e instanceof Error ? e.message : '上传失败'); showUploadError(e instanceof Error ? e.message : '上传失败');
} finally { } finally {
@@ -142,14 +149,19 @@ export default function OssUploadField({
try { try {
weixinSdk.reset(); weixinSdk.reset();
await weixinSdk.init(); await weixinSdk.init();
// 选图 + 上传须在同一个队列任务内完成,避免嵌套 enqueueUpload 死锁
await enqueueUpload(async () => { await enqueueUpload(async () => {
const files = await weixinSdk.chooseImages({ const files = await weixinSdk.chooseImages({
count: 1, count: 1,
sourceType: ['album', 'camera'], sourceType: ['album', 'camera'],
}); });
if (!files?.[0]) return; if (!files?.[0]) return;
await uploadSelectedFile(files[0]); await persistUpload(files[0]);
}); });
} catch (e) {
const msg = e instanceof Error ? e.message : '无法打开相册';
if (/cancel/i.test(msg)) return;
showUploadError(formatWechatUploadError(e));
} finally { } finally {
setUploading(false); setUploading(false);
} }