From 4c8898b6f5431ce18757e8195e1747b99a6ff97c Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 28 Apr 2026 01:14:24 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(im):=20=E4=B8=8A=E4=BC=A0=20?= =?UTF-8?q?URL=20=E5=8F=96=E9=94=99=E5=AD=97=E6=AE=B5=EF=BC=8C=E7=B2=98?= =?UTF-8?q?=E8=B4=B4=E5=9B=BE=E7=89=87=20/=20=E6=96=87=E4=BB=B6=20/=20?= =?UTF-8?q?=E8=AF=AD=E9=9F=B3=E6=B6=88=E6=81=AF=E5=8A=A0=E8=BD=BD=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit axios 配置里 request.upload 直接返回完整 axios response(不是 res.data, 跟 get/post/put 不一致),原代码 (await updateFile(form)) as unknown as string 把整个 {data, status, headers, ...} 对象当成 URL 塞进消息 JSON,接收端 拿到的是序列化串自然加载失败。 uploadAndSendImage / uploadAndSendFile / onVoiceSend 三处统一改成 .data 取值: ((await updateFile(form)) as { data?: string })?.data 跟 mall PictureSelectUpload / bpm SignDialog 等其它业务代码取 URL 的方式一致。 --- .../pages/conversation/components/input/MessageInput.vue | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/views/im/home/pages/conversation/components/input/MessageInput.vue b/src/views/im/home/pages/conversation/components/input/MessageInput.vue index f49bb09d7..cc8563187 100644 --- a/src/views/im/home/pages/conversation/components/input/MessageInput.vue +++ b/src/views/im/home/pages/conversation/components/input/MessageInput.vue @@ -620,7 +620,7 @@ async function uploadAndSendImage(file: File) { try { const form = new FormData() form.append('file', file) - const url = (await updateFile(form)) as unknown as string + const url = ((await updateFile(form)) as { data?: string })?.data if (!url) { return } @@ -636,7 +636,7 @@ async function uploadAndSendFile(file: File) { try { const form = new FormData() form.append('file', file) - const url = (await updateFile(form)) as unknown as string + const url = ((await updateFile(form)) as { data?: string })?.data if (!url) { return } @@ -678,7 +678,8 @@ async function onVoiceSend(payload: { blob: Blob; duration: number }) { const file = new File([payload.blob], `voice-${Date.now()}.webm`, { type: payload.blob.type }) const form = new FormData() form.append('file', file) - const url = (await updateFile(form)) as unknown as string + // request.upload 返回完整 axios response(不是 res.data,跟 get/post/put 不一样),URL 在 .data 里取 + const url = ((await updateFile(form)) as { data?: string })?.data if (!url) { return }