您好我正在使用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";
}
我该如何解决这个问题?
答案 0 :(得分:1)
这是cordova-plugin-file-transfer和cordova-plugin-file插件之间的复杂错误
FileTransfer插件使用“root”类型到File插件。它是默认的,不能更改任何类型
“root”的路径是“/”,这是问题的原因
例如,“持久性”的路径是iphone模拟器上的“/ user / {your name} / Library / ...”。
您无法访问“/”。
我试图在CordovaLib.xcodeproj的CDAFile.m的getAvailableFileSystems()方法中修改@“root”路径。
但是,应用程序在设置后崩溃了
没有聪明的方法,我决定采取不自然的方式改变字符串。
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];
}