请选择 进入手机版 | 继续访问电脑版
  • 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在 Phonegap iOS 中下载文件时出错

[复制链接]
菜鸟教程小白 发表于 2022-12-13 17:12:56 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

您好,我正在使用 Phonegap 创建 iOS 应用程序。我正在使用 Filetransfer API 下载图像文件。我正在使用以下代码下载文件

     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, createFolder, null);

     function createFolder(fileSystem) {
       console.log('gotFS');
       fileSystem.root.getDirectory("MyDirectory", {
                            create: true,
                            exclusive: false
                            }, MyDirectorySuccess, MyDirectoryfail);
    }

    function MyDirectorySuccess(entry) {
         console.log('gotDirectorySuccess');
         downloadFile(entry);
    }
    function downloadFile(entry)
    {
        console.log('downloadFile');

        var filePath = entry.fullPath+'test.jpg';
        var fileTransfer = new FileTransfer();
        var url = 'https://www.facebookbrand.com/img/fb-art.jpg';

        fileTransfer.download(
                         url, filePath, function(entry) {
                         console.log("success");
                         }, function(error) {
                         console.log("error");
                         }, true, {});
    }

当我在 iOS 设备上运行它时出现错误:

    FileTransferError {
    body = "Could not create path to save downloaded file: You don\U2019t have permission to save the file \U201cMyRecipeDirectory\U201d in the folder \U201cMonarch13A452.J72OS\U201d.";
    code = 1;
    "http_status" = 200;
    source = "https://www.facebookbrand.com/img/fb-art.jpg";
    target = "cdvfile://localhost/root/MyDirectory/test.jpg";
}

我该如何解决这个问题?



Best Answer-推荐答案


这是 cordova-plugin-file-transfer 和 cordova-plugin-file 插件之间的复杂错误。
FileTransfer 插件正在使用“root”类型的文件插件。为默认值,不能更改任何类型。
“root”的路径是“/”,这就是问题的原因。 例如,“persistent”的路径在iphone模拟器上为“/user/{your name}/Library/...”。
您无法访问“/”。

我尝试在 getAvailableFileSystems() 方法中修改 @"root"路径,CordovaLib.xcodeproj 的 CDVFile.m。
但是设置后app崩溃了。
没有聪明的办法,我决定采取不自然的方式改变字符串。

CDVFileTransfer.m 第 440 行中的 download() 方法

target = [target stringByReplacingOccurrencesOfString"//" withString"/"];
targetURL = [[self.commandDelegate getCommandInstance"File"] fileSystemURLforLocalPath:target].url;

在此下添加代码。

NSString *absoluteURL = [targetURL absoluteString];
if ([absoluteURL hasPrefix"cdvfile://localhost/root/"]) {
      absoluteURL = [absoluteURL stringByReplacingOccurrencesOfString"cdvfile://localhost/root/" withString"cdvfile://localhost/persistent/"];
      targetURL = [NSURL URLWithString:absoluteURL];
}

关于ios - 在 Phonegap iOS 中下载文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38067751/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap