uni.getFileSystemManager 不支持app平
2023-06-15 本文已影响0人
litielongxx
打包app时,如类似需保存txt到本地,临时目录然后获取临时路径,对接上传阿里云等oss。
uni.getFileSystemManager是不直接nvue或app
可以plus.io app独有替换
image.png
1 wx平台原本生成txt文件
return new Promise((resolve, reject) => {
const fs = wx.getFileSystemManager()
const filePath = `${wx.env.USER_DATA_PATH}/${Date.now()}.txt`
fs.writeFile({
filePath,
data,
encoding: 'utf8',
success(res) {
resolve(filePath)
},
fail(res) {
reject(res)
}
})
})
}
2 替换后新引入 兼容app nvue
import {storage,read} from '@/路径'
const filePath = await storage('a.txt','这里是写入数据')
// read('a.txt').then(res=>{res })
utils/index.js
utils路径下 index.js
export const storage = (addr, data) => {
return new Promise((resolve, reject) => {
plus.io.requestFileSystem(
plus.io.PUBLIC_DOCUMENTS, // 程序公用文档目录常量
fs => {
// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象
fs.root.getFile(
addr,
{
create: true // 文件不存在则创建
},
fileEntry => {
// 文件在手机中的路径
//console.log(fileEntry.fullPath)
fileEntry.createWriter(writer => {
// 写入文件成功完成的回调函数
// 向文件中写入数据
writer.write(JSON.stringify(data))
writer.onwrite = e => {
resolve(e.target.fileName)
}
})
},
e => {
console.log('getFile failed: ' + e.message)
reject(e)
}
)
},
e => {
console.log(e.message)
}
)
})
}
export const read = addr => {
let that = this
return new Promise((resolve, reject) => {
plus.io.requestFileSystem(
plus.io.PUBLIC_DOCUMENTS,
fs => {
fs.root.getFile(
addr,
{
create: false
},
fileEntry => {
fileEntry.file(function(file) {
console.log('文件大小:' + file.size + '-- 文件名:' + file.name)
//创建读取文件对象
let fileReader = new plus.io.FileReader()
//以文本格式读取文件数据内容
fileReader.readAsText(file, 'utf-8')
//文件读取操作完成时的回调函数
fileReader.onloadend = function(evt) {
resolve(evt.target.result)
//console.log("提取的服务器地址:", sURL);
}
})
},
e => {
reject(e)
console.log(e)
}
)
},
e => {
reject(e)
console.log(e.message)
}
)
})
}
参考:
https://blog.csdn.net/start1018/article/details/128588936