uniApp 上传文件。

问题描述

使用 uniApp 上传文件时,打开本地文件夹上传文件。但是现在打开微信列表选择好友进行选择文件。请问能直接选择本地文件夹吗?下面是选择文件的对应代码。我现在用的 chooseMessageFile 这个api 是选择微信消息中的文件,有那种直接选择手机系统文件夹的api吗?

问题出现的环境背景及自己尝试过哪些方法

相关代码

粘贴代码文本(请勿用截图)

wxChooseFile({maxSize = 30,...param}) {
  wx.chooseMessageFile({
    count: 1,
    type: 'file',
    success: ({tempFiles}) => {
        this.setdefUI();
        let file = tempFiles[0];
        if(file.size > (1024*1024 * Math.abs(maxSize))) {
            uni.showToast({
                title:`单个文件请勿超过${maxSize}M,请重新上传`,
                icon: 'none'
            });
            return this.errorHandler('文件选择失败',this.upErr);
        }
        this.handleWXUpload(param,file);
    },
      fail: () => this.errorHandler('文件选择失败',this.upErr)
   })
  },

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 4.7k
1 个回答

用uni.chooseFile,不是wx.chooseMessageFile

https://uniapp.dcloud.io/api/...

uni.chooseFile({
  count: 6, //默认100
  extension:['.zip','.doc'],
    success: function (res) {
        console.log(JSON.stringify(res.tempFilePaths));
    }
});

// 选择图片文件
uni.chooseFile({
  count: 10,
  type: 'image',
  success (res) {
    // tempFilePath可以作为img标签的src属性显示图片
    const tempFilePaths = res.tempFiles
  }
})

微信确实不行,只能选择图片.
需要利用web-view加载你自己的页面,调用input file去打开选择文件界面。

<web-view src="https://www.yourdomain.com/choosefile" @onPostMessage="handleFileMethod"></web-view>

这个应该是有一些条件的,要使用App-nvue,好像个人小程序也不行。
在你自己的页面(H5)里把拿到的文件触发事件传给小程序

wx.miniProgram.postMessage({ file: yourFile })

https://uniapp.dcloud.io/comp...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题