![择善固执](https://img-cdn-tc.dcloud.net.cn/account/identicon/d6f890f0639fe146e0c97f2027a506c2.png)
- 发布:2023-07-20 10:21
- 更新:2023-07-20 10:21
- 阅读:759
产品分类: 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)
})
},
/**
* 批传
* @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 的 auto-upload 为false,同时监听 select 事件实现的。 如果图片正常上传时,一切正常。
当某张图片上传失败时(比如断网),问题来了。
预期结果:
uni-file-picker 组件在没有绑定云服务空间时,文件上传失败也能 点击重试。
uni-file-picker 组件在没有绑定云服务空间时,文件上传失败也能 点击重试。
实际结果:
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)
})
},
阅读此函数逻辑,可知,它不支持未绑定云服务空间时的重试上传。因为要支持两种模式,解决问题对办法很多,但是修改有些复杂。这是我的建议:
- uni-file-picker 中增加事件 uploadFilesIfNoSpace
- uni-file-picker 中修改 uploadFiles,当 noSpace 为true时,触发事件 uploadFilesIfNoSpace,当noSpace为false时,调用原有逻辑。
- uni-file-picker 中删除事件 select,并相应修改 chooseFileCallback,即如果 autoUpload为true,直接调用 uploadFiles。‘
0 个回复