关于editor封装组件参考:微信小程序开发之富文本编辑器 https://developers.weixin.qq.com/community/develop/article/doc/00066ce63e4de8f7793c0f08a51c13
editor组件在Skyline模式下如何应用?
小程序已经运行在Skyline模式,对于webview模式下的editor不兼容,处理办法:在引用editor页面的json配置里:
"renderer": "webview"
编辑器图片上传与处理
关于编辑器内上传的图片,在提交保存之前,可能对编辑器内的图片进行撤销,删除等操作。部分同学是在点击添加图片的时候,就上传返回一个url链接,者导致删除或者撤销编辑器时,服务器存在图片原文件未被删除。
官方文档
我是通过云开发提交给云函数进行处理,代码如下就能实现批量上传,替换编辑器里的html中包含的图片临时文件路径
// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init();
const db = cloud.database();
// 云函数名称
exports.main = async (event, context) => {
try {
// 获取富文本内容
const content = event.content;
// 定义一个函数用于上传图片并替换地址
const processImages = async (content) => {
// 正则表达式匹配图片
const imgRegex = /]+src="([^">]+)"/g;
let match;
let newContent = content;
while ((match = imgRegex.exec(content)) !== null) {
const localImgUrl = match[1];
// 上传图片到云存储
const res = await cloud.uploadFile({
cloudPath: `images/${Date.now()}-${Math.floor(Math.random() * 1000)}.jpg`,
fileContent: Buffer.from(localImgUrl.split(',')[1], 'base64'), // 假设localImgUrl是base64编码
});
const cloudImgUrl = res.fileID;
// 替换图片地址
newContent = newContent.replace(match[0], `<img src="${cloudImgUrl}"`);
}
return newContent;
};
// 处理富文本内容中的图片
const processedContent = await processImages(content);
// 保存处理后的内容到数据库
await db.collection('posts').add({
data: {
content: processedContent,
createTime: db.serverDate(),
},
});
return { success: true };
} catch (err) {
console.error(err);
return { success: false, error: err };
}
};
以上作为editor引用在Skyline模式分享,如果对你有帮助,可以收藏。