Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-im
提交
eb39105b
U
uni-im
项目概览
DCloud
/
uni-im
通知
3
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-im
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
eb39105b
编写于
11月 11, 2024
作者:
DCloud_JSON
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新 修复弱网的情况下,消息含图片等资源上传失败后,点击重发后接收方收到的消息资源错误的问题
上级
1a4fb12c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
37 deletion
+61
-37
components/uni-im-msg-list/uni-im-msg-list.vue
components/uni-im-msg-list/uni-im-msg-list.vue
+5
-2
pages/chat/chat.vue
pages/chat/chat.vue
+56
-35
未找到文件。
components/uni-im-msg-list/uni-im-msg-list.vue
浏览文件 @
eb39105b
...
...
@@ -562,8 +562,11 @@
longpressMsgAvatar
(
e
)
{
this
.
$emit
(
'
longpressMsgAvatar
'
,
e
)
},
retriesSendMsg
(
e
)
{
this
.
$emit
(
'
retriesSendMsg
'
,
e
)
retriesSendMsg
(
msg
)
{
if
(
msg
.
state
===
0
){
return
console
.
error
(
'
消息发送中
'
)
}
this
.
$emit
(
'
retriesSendMsg
'
,
msg
)
},
clickItem
()
{
this
.
$emit
(
'
clickItem
'
)
...
...
pages/chat/chat.vue
浏览文件 @
eb39105b
...
...
@@ -476,18 +476,23 @@
data
[
fileType
]
=
fileInfo
let
msg
=
await
this
.
beforeSendMsg
(
data
,
false
)
// console.log('~~~beforeSendMsg',msg);
try
{
const
uploadFileFn
=
async
()
=>
{
const
result
=
await
uniCloud
.
uploadFile
({
filePath
:
tempFile
.
path
,
cloudPath
:
Date
.
now
()
+
this
.
current_uid
+
'
.
'
+
name
.
split
(
'
.
'
).
pop
(),
});
// console.log('result.fileID',result.fileID);
msg
.
body
.
url
=
result
.
fileID
}
try
{
await
uploadFileFn
()
this
.
sendMsg
(
msg
)
}
catch
(
e
){
console
.
error
(
'
uploadFile error:
'
,
e
)
// 重发之前增加先上传图片的逻辑
msg
.
__beforeRetriesAction
=
uploadFileFn
msg
.
state
=
-
200
}
});
},
async
chooseFileSendMsg
(
type
,
_config
=
{})
{
...
...
@@ -632,41 +637,51 @@
"
rich
-
text
"
:HtmlArr
},false)
// 上传消息中的图片
let promiseArr = []
msg.body.forEach(async item=>{
if(item.name === 'img'){
promiseArr.push(new Promise((resolve,reject)=>{
uni.getImageInfo({
src:item.attrs.src,
success:res=>{
item.attrs.width = res.width
item.attrs.height = res.height
resolve()
},
fail:reject
});
}))
if(item.attrs.src.indexOf('blob:http') === 0){
const uploadFileFn = async ()=>{
// 上传消息中的图片
let promiseArr = []
msg.body.forEach(async item=>{
if(item.name === 'img'){
promiseArr.push(new Promise((resolve,reject)=>{
uniCloud.uploadFile({
filePath: item.attrs.src,
cloudPath: Date.now() + this.current_uid + '.' + name.split('.').pop(),
}).then(res=>{
item.attrs.src = res.fileID
// console.log('上传成功',res);
resolve()
}).catch(e=>{
reject()
})
uni.getImageInfo({
src:item.attrs.src,
success:res=>{
item.attrs.width = res.width
item.attrs.height = res.height
resolve()
},
fail:reject
});
}))
if(item.attrs.src.indexOf('blob:http') === 0){
promiseArr.push(new Promise((resolve,reject)=>{
uniCloud.uploadFile({
filePath: item.attrs.src,
cloudPath: Date.now() + this.current_uid + '.' + name.split('.').pop(),
}).then(res=>{
item.attrs.src = res.fileID
// console.log('上传成功',res);
resolve()
}).catch(e=>{
reject()
})
}))
}
}
}
})
await Promise.all(promiseArr)
// 执行发送
this.sendMsg(msg)
})
await Promise.all(promiseArr)
}
try{
await uploadFileFn()
// 执行发送
this.sendMsg(msg)
}catch(e){
// 重发之前增加先上传图片的逻辑
msg.__beforeRetriesAction = uploadFileFn
msg.state = -200
}
}else{
// 把this.chatInputContent中的 变成空格,再把头尾的空格去掉
this.chatInputContent = this.chatInputContent.replace(/ /g, ' ').trim()
...
...
@@ -787,10 +802,16 @@
}
});
},
retriesSendMsg(msg) {
async
retriesSendMsg(msg) {
uni.showLoading({
mask: true
});
msg.state = 0
// 检查文件是否上传成功
if(msg.__beforeRetriesAction){
await msg.__beforeRetriesAction()
}
delete msg.__beforeRetriesAction
// console.log('retriesSendMsg', msg);
msg.isRetries = true
this.sendMsg(msg, e => {
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录