這個方法的解決思路是: 將rich-text html中的img的src從雲端存儲的id轉變為http形式的臨時url.微信中提供了這個方法.wx.cloud.getTempFileURL.
這個方法的缺陷也是rich-text的缺陷是:這樣轉換的img不能預覽,rich-text是一個封閉的容器,其中的image的事件js捕捉不到.因此預覽方法不能使用.
具體的操作步驟:
1 //首先從雲端數據庫中讀取數據 2 db.collection('flowsDetail').doc(options.id).get({ 3 success: function (res) { 4 // res.data 包含該記錄的數據 5 var timestamp = Date.parse(new Date()); 6 let expiration = timestamp + 100000; 7 wx.setStorage({ 8 key: 'flowDetail'+options.id, 9 data: res.data, 10 }) 11 wx.setStorageSync("expiration_flowDetail" + options.id, expiration); 12 13 //得到要存入rich-text中的message. 14 var _message=res.data.message; 15 var img_index= _message.indexOf("img") 16 console.log(img_index); 17 18 //如果message中有img 19 if (img_index>-1){ 20 //找到雲端的src 21 var srcindex = _message.indexOf("cloud:"); 22 var pngindex=_message.indexOf(".png"); 23 var src = _message.substring(srcindex, pngindex+4); 24 console.log(src); 25 //使用wx提供的getTempFileURL的方法獲取臨時url 26 wx.cloud.getTempFileURL({ 27 fileList: [src], 28 success: res => { 29 // 將原來message中的img的src 雲端id轉換為零時的fileId 30 // console.log(res.fileList[0].tempFileURL); 31 var newMess = _message.replace(src, res.fileList[0].tempFileURL); 32 //設置message 33 _this.setData({ message: newMess}); 34 }, 35 }) 36 }else{ 37 console.log("沒有img"); 38 }