我創建了一個簡單的科爾多瓦android應用程序,我試圖從網址下載圖像到圖片庫,但我真的不知道什麼是錯的。 我已經在計算器這裏搜索了很多,主要包括以下環節:科爾多瓦 - 從URL下載圖像到圖片庫
Phonegap - Save image from url into device photo gallery
How to save an Image object into a file in Android with Phonegap?
我已經安裝了科爾多瓦文件傳輸的插件,並試圖從官方網站做例子,但沒有工作過:https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file-transfer/
我試過2個不同的代碼,它們是:
1)第一次嘗試:
document.getElementById("myBtn").addEventListener("click", function() {
download("http://cordova.apache.org/static/img/cordova_bot.png", "data", "new_file");
});
function download(URL, Folder_Name, File_Name) {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileSystemFail);
function fileSystemSuccess(fileSystem) {
var download_link = encodeURI(URL);
ext = download_link.substr(download_link.lastIndexOf('.') + 1); //Get extension of URL
var directoryEntry = fileSystem.root; // to get root path of directory
directoryEntry.getDirectory(Folder_Name, {
create: true,
exclusive: false
}, onDirectorySuccess, onDirectoryFail); // creating folder in sdcard
var rootdir = fileSystem.root;
var fp = rootdir.toURL();
fp = fp + "/" + Folder_Name + "/" + File_Name + "." + ext; // fullpath and name of the file which we want to give
filetransfer(download_link, fp);
}
function onDirectorySuccess(parent) {
// Directory created successfuly
}
function onDirectoryFail(error) {
alert("Unable to create new directory: " + error.code);
}
function fileSystemFail(evt) {
//Unable to access file system
alert(evt.target.error.code);
}
}
function filetransfer(download_link, fp) {
var fileTransfer = new FileTransfer();
fileTransfer.download(download_link, fp,
function (entry) {
alert("download complete: " + entry.fullPath);
//cordova.plugins.imagesaver.saveImageToGallery(entry.fullPath, successCallback, errorCallback);
},
function (error) {
alert("download error source " + error.source);
}
);
}
在這種嘗試中,我得到的警告信息「下載完成:/my_folder/new_file.png」,但我找不到在哪裏的圖片被下載。 這絕對不是在圖片庫或任何我能找到它的地方。
2)第二次嘗試:
function download() {
window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) {
var url = 'http://cordova.apache.org/static/img/cordova_bot.png';
fs.root.getFile('downloaded-image.png', {
create: true,
exclusive: false
}, function (fileEntry) {
file_transfer(fileEntry, encodeURI(url), true);
}, onErrorCreateFile);
}, onErrorLoadFs);
}
function onErrorLoadFs(msg){
alert(msg);
}
function onErrorCreateFile(msg){
alert(msg);
}
function file_transfer(fileEntry, uri, readBinaryData) {
var fileTransfer = new FileTransfer();
var fileURL = fileEntry.toURL();
fileTransfer.download(
uri,
fileURL,
function (entry) {
alert("download complete: " + entry.toURL());
if (readBinaryData) {
// Read the file...
readBinaryFile(entry);
} else {
// Or just display it.
displayImageByFileURL(entry);
}
},
function (error) {
alert("download error source " + error.source);
alert("download error target " + error.target);
alert("upload error code" + error.code);
},
null, // or, pass false
{
//headers: {
// "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
//}
}
);
}
在這種嘗試中,我得到的警告信息「下載完整的:文件:///data/user/0/com.companyname.xxxxxxx/cache/downloaded -image.png「,但我也無法在設備中的任何位置找到圖片。
我已經在兩個不同的android設備上試過應用程序。
我建議爲這樣的東西創建自己的科爾多瓦插件。我有很多的android開發和處理文件的正確創建是一個時間的B字,我不會相信他們的插件。 –