一般本地构建txt需要上传oss时,需要拿到临时文件地址filePath之类才能进行后续的上传。 但注意不同端使时方式不同
1 wx
是小程序环境的全局对象
arduino
// 小程序
#ifdef MP-WEIXIN
// export const createTxt = data => {
// 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)
// }
// })
// })
// }
#endif
2 网页环境 (File
和 URL.createObjectURL
是 Web API);
arduino
// 网页输出时
#ifdef H5
// export const createTxt = text => {
// let file = new File([text], `${Date.now()}`, { type: 'text/plain' })
// return URL.createObjectURL(file)
// }
#endif
3 app 环境(Android/iOS)用的是 plus
对象,不支持 wx
和 Web API
javascript
// app平台专用
#ifdef APP-PLUS
export const createTxt = (data) => {
return new Promise((resolve, reject) => {
// 获取应用沙盒目录
const fileName = `${Date.now()}.txt`;
plus.io.requestFileSystem(
plus.io.PRIVATE_DOC, // 沙盒路径,安全可写
(fs) => {
fs.root.getFile(
fileName,
{ create: true },
(entry) => {
entry.createWriter((writer) => {
writer.onwrite = () => resolve(entry.fullPath);
writer.onerror = reject;
writer.write(data);
}, reject);
},
reject
);
},
reject
);
});
};
#endif