首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用FileTransfer在Cordova和Ionic中下载文件

无法使用FileTransfer在Cordova和Ionic中下载文件
EN

Stack Overflow用户
提问于 2017-02-10 15:37:49
回答 2查看 1.8K关注 0票数 2

我希望在我的ionic应用程序上从互联网/服务器下载一个文件。我一直在使用文件传输插件来实现同样的功能,但是文件并没有被下载。

我收到了来自插件的成功回调,但如果我尝试从fileOpener2插件打开该文件,我会得到一个错误,即该文件不存在。我检查了我手机的所有存储器,但没有找到这个文件。PFB我使用的代码:

代码语言:javascript
复制
var fileTransfer = new FileTransfer();

var imguri = "http://cdn.wall-pix.net/albums/art-space/00030109.jpg";
var targetPath = cordova.file.dataDirectory + "testImage.jpg";
fileTransfer.download(
imguri,
targetPath,
function(entry) {
    console.log("download complete - Internal URL: " + entry.toInternalURL());
    console.log("download complete - Full Path: " + entry.fullPath);

                            $cordovaFileOpener2.open(entry.fullPath, 'image/jpeg').then(function() {
                        // file opened successfully
                        console.log("File opened successfully!");
                    }, function(err) {
                        // An error occurred. Show a message to the user
                        console.log(JSON.stringify(err));
                    });



},
function(error) {
    console.log("download error source " + error.source);
    console.log("download error target " + error.target);
    console.log("download error code" + error.code);
},
false,
{
    headers: {
        "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
    }
}
);

在$cordovaFileOpener2.open中,如果我给entry.toInternalURL作为参数,我会得到这样的错误:-> Failed to Failed find root that /data/data/com.echidna.foodreview/files/testImage.jpg

在$cordovaFileOpener2.open中,如果我提供entry.fullPath作为参数,我会得到这个错误消息{“->”:9,“->”:“找不到文件”}

在我的文件管理器中,我搜索了testImage.jpg文件,但没有找到该文件。这应该意味着文件一开始就没有下载,那么success回调是如何触发的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-14 15:44:56

这个问题似乎是Android 6.0和更高版本的应用程序所需的新用户权限。文件插件不会请求用户进行存储访问。这必须首先由应用程序请求,这可以由另一个插件处理。有几个插件可以做到这一点,但我使用的是https://github.com/NeoLSN/cordova-plugin-android-permission,这对我来说很有效!

因此,在下载之前,请检查您是否拥有存储空间的写入权限。如果没有,则请求权限(检查和请求权限由上面链接中的插件处理)。获得访问权限后,请下载所需的任何文件!

干杯!

票数 1
EN

Stack Overflow用户

发布于 2017-08-21 20:06:34

而不是

代码语言:javascript
复制
 file.dataDirectory 

它将文件存储为私有文件,不允许您的文件管理器读取它

使用

代码语言:javascript
复制
 file.externalDataDirectory 

将文件存储为公共文件并允许其他应用程序打开该文件

请不要与externalDataDirectory混淆,因为(SD卡)它只使用您的设备的内部存储器

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42153934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档