选图成功上传bug修复
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user