univue系列

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

上一篇下一篇

猜你喜欢

热点阅读