我创建了一个Cordova应用程序,从服务器获取图像并将其保存到iPad.但是,尝试在应用程序中显示图像时,图像将无法加载.这种文件路径的一个例子可能是:
file:///var/mobile/Containers/data/Application/FC87E925-9753-4D9F-AE27-54FCF9B0451E/Documents/-media-3405-company.png
但是,在检查cordova.file.applicationDirectory变量时,我找到了另一条路径,例如(请注意,即使我在同一次运行中检查两个变量,UUID也不同)
file:///var/containers/Bundle/Application/D8266D08-18A4-4293-B78A-B4597FC0C6B8/salesApp.app/
因此,对于documentation,正确的路径“应该”:(但是,这也不起作用)
file:///var/mobile/Applications/UUID/Documents/-media-3405-company.png
这是我用来加载图像的代码,这些代码已正确保存到设备中
const downloadFile = (url,fileName,callback) => {
window.requestFileSystem(LocalFileSystem.PERSISTENT,(fs) => {
fs.root.getFile(fileName,{
create: true,exclusive: false
},(fileEntry) => {
const fileURL = fileEntry.toURL()
const fileTransfer = new FileTransfer()
fileTransfer.download(
url,fileURL,(entry) => {
const file = entry.toURL() //
content.pushObject('Downloaded ' + entry + ' (' + fileName + ') ' + file)
callback(file)
},(error) => {
content.pushObject('error ' + error.code + '(' + fileName + ')')
if (error.code === FileTransferError.CONNECTION_ERR) {
downloadFile(url,fileName) // Try again
} else {
decrement(url) // Ignore this file
}
}
)
},(error) => {
alert(2)
})
},() => {
alert(3)
})
}
更新:检查cordova.file.documentsDirectory的值,我发现它返回类似于以下的路径:file:/// var / mobile / Containers / Data / Application / {UUID} / Documents /.
更新:以下代码将返回两个不同的UUID:
alert(cordova.file.applicationDirectory); // file:///var/containers/Bundle/Application/54E0F914-C45B-4B8F-9067-C13AF1967760/salesApp.app/
alert(cordova.file.documentsDirectory); // file:///var/mobile/Containers/Data/Application/73806E90-90B4-488C-A68A-2715C3627489/Documents/
在检查entry.toURL()的路径时,我获得与cordova.file.documentsDirectory中返回的UUID相同的UUID.