//First step check parameters mismatch and checking network connection if available call download function
function DownloadFile(URL, Folder_Name, File_Name) {
//Parameters mismatch check
if (URL == null && Folder_Name == null && File_Name == null) {
return;
}
else {
//checking Internet connection availablity
var networkState = navigator.connection.type;
if (networkState == Connection.NONE) {
return;
} else {
download(URL, Folder_Name, File_Name); //If available download function call
}
}
}
//获取写入权限和文件夹创建的第二步
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);
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.fullPath; // Returns Fulpath of local directory
fp = fp + "/" + Folder_Name + "/" + File_Name + "." + ext; // fullpath and name of the file which we want to give
// download function call
filetransfer(download_link, fp);
}
function onDirectorySuccess(parent) {
// Directory created successfuly
}
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();
// 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
alert("download error source " + error.source);
//alert("download error target " + error.target);
//alert("upload error code" + error.code);
}
);
}
9 回答
这是任何人都可以使用的文件下载代码 . 你只需要三个参数来使用它 -
1) URL
2) Folder name 您要在Sdcard中创建
3) File name (你可以给文件命名)
所有类型的文件都可以使用此代码下载 . 你可以使用它作为.js这也适用于
IOS
.//获取写入权限和文件夹创建的第二步
//将文件下载到创建文件夹的第三步
Useful Link
最新版本的Cordova(3.3),较新的(1.0.0)版本的File使用文件系统URL而不是文件路径 . 因此,要使accepted answer与FileSystemSuccess函数中的较新版本一起使用,请更改以下行:
至:
另一种简单的方法是使用Cordova / Phonegap插件Canvas2ImagePlugin . 安装它并将以下函数添加到您的代码中,该函数基于Raul Sanchez的getImageDataURL()(谢谢!) .
像这样使用它:
这可以使用手机间隙file插件完成:
也许你可以试试我为IOS写的插件
这是git链接:https://github.com/Nomia/ImgDownloader
简短示例:
您还可以使用 download 方法将本地文件保存到图库
Simplest approach
如果你对它在下载的文件夹中没问题,请执行以下操作
这不仅会下载它将提供的图像,以在相应的应用程序或浏览器中打开图像 .
我目前正致力于cordova-plugin-photo-library .
它可以保存url(file://或data :)给出的图像 . 适用于ios和android,jpeg / png / gif:
我最初得到
"Could not create target file"
.为此,请在网址上下载
encodeURI()
:代码in this thread工作得很好 . 把它放在这里 .
我清理并在角度服务中包装建议的代码by Suhas above - the accepted answer,以便它可以很容易地在其他应用程序中使用 . 你可以找到snipet here .
要使用它,请在app.js(和index.html文件)中包含脚本,然后: