美文网首页univue系列
uni.getFileSystemManager 不支持app平

uni.getFileSystemManager 不支持app平

作者: litielongxx | 来源:发表于2023-06-15 15:08 被阅读0次

    打包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

    相关文章

      网友评论

        本文标题:uni.getFileSystemManager 不支持app平

        本文链接:https://www.haomeiwen.com/subject/tmdlydtx.html