1、问题描述
最近做毕设的时候发现要读取微信小程序云存储中的txt文件内容,安卓端一切正常,但是ios15就一直不能读取内容。感觉是存储权限的问题,在网上找了很多方法都不行。最后用云函数解决的。
2、代码
这样写安卓没问题 但是ios读取不到文件
getBookText(book_name,readStart,readStep) {
var data = this.data.allcontent
wx.cloud.downloadFile({
fileID: 'cloud://cloud1-0g969ggs31e658ac.636c-cloud1-0g969ggs31e658ac-1309479295/book_file/'+book_name+'.txt'
}).then(res => {
let fs = wx.getFileSystemManager()
let result = fs.readFileSync(res.tempFilePath, "utf-8", readStart,readStep)
data += result
this.setData({
allcontent: data,
readStart:readStart+readStep,
})
}).catch(error => {
// handle error
console.log(error);
})
},
改进后
getBookText(book_name, readStart, readStep) {
var data = this.data.allcontent
wx.cloud.callFunction({
name: 'readBook',
data: {
bookName: book_name,
readStart:readStart,
readStep:readStep,
}
}).then((resp) => {
var result = resp.result
data += result
this.setData({
allcontent: data,
readStart: readStart + readStep,
})
}).catch((e) => {
console.log(e);
// wx.hideLoading();
});
},
云函数
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const fileID = event.bookName + '.txt'
const res = await cloud.downloadFile({
fileID: fileID,
})
const buffer = res.fileContent
return buffer.toString('utf8',event.readStart,event.readStart+event.readStep)
}
这样就可以解决了。