Android 6(API 23)与ngCordova的文件传输权限问题



问题/问题:

我在执行以下操作时出现权限错误:

(注意:我已经尝试过像文档建议的那样使用videoData[0].fullPathvideoData[0].localURLvideoData[0].toURL(),这对我来说没有意义,但都失败了。(

$cordovaCapture.captureVideo(options).then(function(videoData) {
    // Video Captures works, however when I try to upload I get permission error below.
    $cordovaFileTransfer.upload(baseUrl + '/api/users/upload', videoData[0].fullPath, options, true)
        .then(function(result) {
            // this never triggers
        }, function(err) {
            // here I get permission open failed:EACCES (Permission denied)
            $scope.debug= err;
        });
});

我是不是少了一步?我测试了我的API,当使用Postman时,它可以很好地处理上传。我希望它能提示我使用新的权限模型来询问我是否希望它允许它访问我的存储,但它从来没有做到这一点。

感谢您的帮助。

我也尝试过同样的方法,它在android 6.0 中运行良好

  1. 安装最新的cordova插件文件传输(1.5.1版本(

  2. 在您的代码中,您传递相同的选项来捕获和上传。尝试更改选项。参考https://www.npmjs.com/package/cordova-plugin-file-transfer

      fileTransferOptions = {
             'fileKey'   : 'files',
             'fileName'  : FILE_NAME,
            'chunkedMode': false
        }
     $cordovaFileTransfer.upload(serverUrl, videoData[0].fullPath, fileTransferOptions)
                .then(function (data) {
                    console.log('success');
                }, function (err) {console.log('error', err)});
    
  3. 如果没有提示存储权限,则不会启用权限。(您可以添加额外的java代码以始终允许存储访问(现在,您可以从移动设置->应用程序->转到选定的应用程序并单击权限,打开存储访问。

  4. 检查上传文件的服务器URL是否正确。

  5. 将服务器url列入白名单。

    <acess origin="YOUR_SERVER_URL"/>' /*Network accesss enable*/ <access origin="http://*/*"/>
    <access origin="https://*/*"/>

最新更新