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

FileTransfer Permission issue on Android 6 (API 23) with ngCordova

Question/Issue:

我在执行以下操作时遇到权限错误:

(注意:我试过使用 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-plugin-file-transfer(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. 检查上传文件的serverUrl是否正确

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

    <访问来源="YOUR_SERVER_URL"/>' /*网络访问使能*/ <访问源="http://*/*"/><br> <访问源="https://*/*"/>