择善固执
择善固执
  • 发布:2023-07-20 10:21
  • 更新:2023-07-20 10:21
  • 阅读:759

【报Bug】uni-file-picker 在未绑定服务空间情况下上传失败时“点击重试” 不工作

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 13.4.1 (c) (22F770820d)

HBuilderX类型: 正式

HBuilderX版本号: 3.8.7

手机系统: 全部

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

测试过的手机:

各种手机

示例代码:
        /**  
         * 批传  
         * @param {Object} e  
         */  
        uploadFiles(files) {  
            files = [].concat(files)  
            return uploadCloudFiles.call(this, files, 5, res => {  
                    this.setProgress(res, res.index, true)  
                })  
                .then(result => {  
                    this.setSuccessAndError(result)  
                    return result;  
                })  
                .catch(err => {  
                    console.log(err)  
                })  
        },

操作步骤:

以前老项目有自己的图片存储,所以应用 uni-file-picker 没有上传到绑定的云服务空间。 这个是通过设置 uni-file-picker 的 auto-upload 为false,同时监听 select 事件实现的。 如果图片正常上传时,一切正常。

当某张图片上传失败时(比如断网),问题来了。

预期结果:

uni-file-picker 组件在没有绑定云服务空间时,文件上传失败也能 点击重试。

实际结果:

uni-file-picker 组件在没有绑定云服务空间时,文件上传失败不支持 点击重试。

bug描述:

本地测试环境较为复杂,通过读代码分析出来的,因此文字描述。

以前老项目有自己的图片存储,所以应用 uni-file-picker 没有上传到绑定的云服务空间。 这个是通过设置 uni-file-picker 的 auto-upload 为false,同时监听 select 事件实现的。 如果图片正常上传时,一切正常。

当某张图片上传失败时(比如断网),问题来了。在 upload-file.vue 和 upload-image.vue 均有根据文件状态或者错误消息显示“点击重试”,点击后通过事件触发uni-file-picker.vue 中的 uploadFiles 函数,定义如下:
/**

  • 批传
  • @param {Object} e
    */
    uploadFiles(files) {
    files = [].concat(files)
    return uploadCloudFiles.call(this, files, 5, res => {
    this.setProgress(res, res.index, true)
    })
    .then(result => {
    this.setSuccessAndError(result)
    return result;
    })
    .catch(err => {
    console.log(err)
    })
    },

阅读此函数逻辑,可知,它不支持未绑定云服务空间时的重试上传。因为要支持两种模式,解决问题对办法很多,但是修改有些复杂。这是我的建议:

  1. uni-file-picker 中增加事件 uploadFilesIfNoSpace
  2. uni-file-picker 中修改 uploadFiles,当 noSpace 为true时,触发事件 uploadFilesIfNoSpace,当noSpace为false时,调用原有逻辑。
  3. uni-file-picker 中删除事件 select,并相应修改 chooseFileCallback,即如果 autoUpload为true,直接调用 uploadFiles。‘
2023-07-20 10:21 负责人:无 分享
已邀请:

要回复问题请先登录注册