# GIF 消息
方法说明中并非所有的方法都会写在文档中,具体请前往相关文件查看代码逻辑。
# 文件位置
TIP
文件位于 src\views\_uc-chat\msg-chat\content-send\send-image\index.js
sendGif
# 使用方法
代码可以参考 src\views\_uc-chat\msg-chat\content-send\contentSend.vue
// 引入图片上传模块
import {
sendImage,
sendGif,
} from "@/views/_uc-chat/msg-chat/content-send/send-image/index.js";
/**
* 图片上传
* @param {*} file 文件
* @param {*} param1 传 { currentUserInfo, currentChatList }
* @param {*} time 延时上传时间,一下子加很多文件,没有延时的话会有性能问题,比如选项卡切换不动
*/
sendGif(file, { currentUserInfo, currentChatList }, (time = 0));
# 上传 GIF 依赖文件
import { UCMessage } from "@/control/message/messageSender.js";
消息发送import { UC_File } from "@/control/uc-file/ucFile.js";
文件上传import store from "@/store";
store 获取
# 代码分析
实例化消息体
let Content = {
gifDataSize: file.size, // GIF图片大小
height: 100, // GIF图片高度
width: 100, // GIF图片宽度
// localPath: file.path,
remoteUrl: file.path, // GIF图片路径
state: FileStatus.PREUPLOAD,
extra: JSON.stringify({
userId: currentUserInfo.memberid,
userName: currentUserInfo.name,
toId: currentChatList.targetId,
toName: currentChatList.conversationTitle,
from_c: "PC",
pcMAC: ZX_CLIENT.getMAC(),
}),
user: {
id: currentUserInfo.memberid,
name: currentUserInfo.name,
portrait: "",
},
};
const gifMessage = new UCMessage("GIFMessage", Content);
向页面中添加消息体
gifMessage.preAppend({
conversationType: currentChatList.conversationType,
targetId: currentChatList.targetId,
targetName: currentChatList.conversationTitle,
});
实例化GIF图片文件上传并上传
let uploadFile = new UC_File(gifMessage);
uploadFile.upload(file, (status, data) => {
console.log(status, data);
if (status == "success") {
console.log("上传完成后返回的数据", data);
let fileInfo = JSON.parse(data);
// 获取远程服务器上的图片的路径,是一串数字,也就是文件ID
const fileURL = fileInfo.atts[0].fileUrl;
gifMessage.content.remoteUrl = fileURL;
// gifMessage.content.localPath = fileURL;
// 解决添加消息体后已经向数据库写入了,但是发送后不更新fileURL的问题
ZX_CLIENT.ImMsg.updateChatMessage(
{
messageId: gifMessage.messageId,
},
{
content: gifMessage.content,
}
);
console.log("格式化上传完成后返回的数据", fileInfo, gifMessage);
// 上传成功后将GIF消息发送出去
gifMessage.sent({
conversationType: currentChatList.conversationType,
targetId: currentChatList.targetId,
needAppend: false,
targetName: currentChatList.conversationTitle,
});
// 修改消息状态
changeMessageParams(gifMessage, "content", gifMessage.content);
}
});