Reputation: 159
I am developing an application with Apache Cordova that downloads and saves images, but I can not save and display the Gallery, the image goes to file:///data/data
for while i'm trying to run on Android, what can I do?
My code:
function download(URL, Folder_Name, File_Name) {
//step to request a file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystemSuccess, fileSystemFail);
function fileSystemSuccess(fileSystem) {
var download_link = encodeURI(URL);
var ext = download_link.substring(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(); // Returns Fulpath of local directory
console.log(rootdir);
fp = fp + "/" + Folder_Name + "/" + File_Name; // fullpath and name of the file which we want to give
// download function call
filetransfer(download_link, fp);
}
function onDirectorySuccess(parent) {
//alert("Sucesso");
}
function onDirectoryFail(error) {
//Error while creating directory
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();
console.log(fp);
// File download function with URL and local path
fileTransfer.download(download_link, fp,
function (entry) {
//alert("download complete: " + entry.fullPath);
},
function (error) {
//Download abort errors or download failed errors
console.log(error);
alert(error.exception);
alert("download error source " + error.source);
//alert("download error target " + error.target);
//alert("upload error code" + error.code);
}
);
}
Upvotes: 2
Views: 8207
Reputation: 763
please try to import this plugin in your project :-
https://github.com/devgeeks/Canvas2ImagePlugin.git
Upvotes: 1
Reputation: 159
The images were being saved, but needed the Media Scanner to index the images on gallery
Media Scanner:
MediaScannerConnection provides a way for applications to pass a newly created or downloaded media file to the media scanner service. The media scanner service will read metadata from the file and add the file to the media content provider.
How was working with Apache Cordova / PhoneGap it provides no native method to refresh the images in the native gallery, I had to just look for a plugin to do this job. The plugins I found were:
cordova-mediascanner-plugin
MediaScannerPlugin
Both have a basic documentation, however i used cordova-mediascanner-plugin.
By implementing this plugin, just modified my filetransfer
method
function filetransfer(download_link, fp) {
var fileTransfer = new FileTransfer();
console.log(fp);
// File download function with URL and local path
fileTransfer.download(download_link, fp,
function (entry) {
//alert("download complete: " + entry.fullPath);
window.plugins.scanmedia.scanFile(fp, function (msg) {
alert("Success ScanMedia");
}, function (err) {
alert("Fail ScanMedia: " + err);
})
},
function (error) {
//Download abort errors or download failed errors
console.log(error);
alert(error.exception);
alert("download error source " + error.source);
//alert("download error target " + error.target);
//alert("upload error code" + error.code);
}
);
}
Upvotes: 2