收藏
回答

微信开发者工具有关文件的api————copyFile?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 copyFile 工具 8.0.3以上 用的模拟器调试 2.17.0
这边是把a.zip文件丢在项目路径下,先复制一份到${wx.env.USER_DATA_PATH}这个路径里面,然后再去读${wx.env.USER_DATA_PATH}路径里的a.zip文件
但是执行之后 copyFile接口会警告————“文件或文件夹不在白名单中, 上传时会被忽略, 在真机上可能无法读取和复制文件”
             并报错————“失败: {errMsg: "copyFile:fail permission denied, open ../../utils/a.zip"}”
我一开始认为是文件的问题 后面用了fs.access这个api发现走的是success这个逻辑,所以文件路径和权限应该是没为题的
也问了ai 把project.config.json中"ignoreUploadUnusedFiles"改成了false,但还是没有用,后来以为是zip的问题,但是换成js文件也是一样的报错,
求解答!!!!!!!

代码如下:
const fs = wx.getFileSystemManager();
  const srcPath = "/utils/a.zip";                         // 项目内文件路径 
  const destPath = `${wx.env.USER_DATA_PATH}/a.zip`;      // 可读写目录路径
  fs.copyFile({
    srcPath: srcPath,
    destPath: destPath,
    success() => { 
      // 复制成功后读取文件
      fs.readFile({
        filePath: destPath,
        encoding'utf8',
        success(res) => {
          console.log('文件内容:', res.data);
        },
        fail(err) => {
          console.error('读取文件失败:', err);
        }
      });
    },
    fail(err) => {
      console.error('复制文件失败:', err);
    } 
  });


警告和报错如下:

回答关注问题邀请回答
收藏

1 个回答

  • LTao.
    LTao.
    2天前

    这里的白名单指的是微信自带的白名单https://developers.weixin.qq.com/miniprogram/dev/framework/structure.html


    zip文件不在文档描述的白名单里面,所以没办法按你那么操作,最好的办法还是把你的zip文件丢到服务器里面然后调用downloadFile将文件下载到本地,然后进行读取

    2天前
    有用
    回复 1
    • LTao.
      LTao.
      2天前
      另外 这里的copyFile的参数srcPath和destPath,文档描述的是支持本地路径,这里的「本地路径」并不指的是你小程序代码所在的路径,而是${wx.env.USER_DATA_PATH}这个目录下的路径,这个${wx.env.USER_DATA_PATH}的文件实际也是存储的本地的,所以你的srcPath不应该传入代码文件所在的绝对路径
      2天前
      回复
登录 后发表内容