6***@qq.com
6***@qq.com
  • 发布:2021-06-15 15:29
  • 更新:2021-06-15 17:01
  • 阅读:562

uni.chooseVideo() 在Android 端 返回的文件路径是物理的文件路径,导致uni.uploadFile() 上传文件失败

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 7 旗舰版

HBuilderX类型: 正式

HBuilderX版本号: 3.1.11

手机系统: Android

手机系统版本号: Android 6.0

手机厂商: HTC

手机机型: M8

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

videoFile:{file:{},filePath:'',fileName:String},
//选择视频文件
chooseVideo(){
var _this = this
uni.chooseVideo({
count:2,
sourceType: ['camera', 'album'],
success:function(res){
console.log("chooseVideo success ="+JSON.stringify(res))

                    var fileName = ''         
                    if(res.name === undefined){  
                         fileName =  _this.getNameFromFilePath(res.tempFilePath);  
                        console.log("undefined fileName ="+fileName);  
                    }else {  
                        fileName = new String(res.name);  
                        console.log(" fileName ="+fileName);  
                    }  
                    _this.videoFile = {file: res.tempFile,filePath:res.tempFilePath,fileName:((new String(fileName)).split(".")[0])}  
                     console.log("_this.videoFile ="+JSON.stringify(_this.videoFile))   
                 },  
                 fai:function(){  
                     console.log("chooseVideo fail ="+JSON.stringify(res))  

                 }  
            })  
        },  

        uploadFile(_file){  

                console.log("uploadFiles _file ="+JSON.stringify(_file))  
            var _this = this;  
            var successCallback = function(res){  
                    console.log('uploadFile success '+JSON.stringify(res))  
                };  
                var failCallback = function(error){  
                    console.log('uploadFile fail error = '+JSON.stringify(error))  
                }  
            var param = {url:"http://192.168.11.71:8080/upload/",file:{},name:_file.fileName,filePath:_file.filePath,success:successCallback,fail:failCallback}  
            if(_file.file !== undefined){  
                param.file = _file.file  
            }  
            uni.uploadFile(param)  
        }  

操作步骤:

1、调用 uni.chooseVideo() 方法获取视频的路径
2、将1中返回的视频的路径传入uni.uploadFile(),上传视频到服务器

预期结果:

成功上传

实际结果:

上传失败

I/console: [LOG]uploadFiles _file ={"filePath":"/storage/emulated/0/Android/data/com.skyworth.libapp/apps/UNIB0EC99A/temp/compress_video_22234740.mp4","fileName":"compress_video_22234740"} at pages/common_function/upload.vue:145
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.skyworth.libapp/apps/UNIB0EC99A/www/storage/emulated/0/Android/data/com.skyworth.libapp/apps/UNIB0EC99A/temp/compress_video_22234740.mp4: open

bug描述:

uni.chooseVideo() 在Android 端 返回的文件路径是物理的文件路径,导致uni.uploadFile() 上传文件失败

2021-06-15 15:29 负责人:无 分享
已邀请:
DCloud_Android_DQQ

DCloud_Android_DQQ

你用最新版本 3.1.19试试

6***@qq.com

6***@qq.com (作者)

在文件物理地址前面加上file://,例如:
file:///storage/emulated/0/Android/data/com.sky.libapp/apps/UNIB0EC99A/temp/compress_video_1824232.mp4
文档没有说明这样的操作,自己试出来的

该问题目前已经被锁定, 无法添加新回复