Downloader:
package com.phonegap.Sample;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONArray;
import org.json.JSONException;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
public class Downloader extends Plugin
{
@Override
public PluginResult execute(String arg0, JSONArray arg1, String arg2)
{
if(arg0.equals("downloadFile"))
{
try
{
return this.downloadUrl(arg1.getString(0),arg1.getString(1),arg1.getString(2),arg1.getString(3));
}
catch (JSONException e)
{
e.printStackTrace();
return new PluginResult(PluginResult.Status.ERROR,"param errors");
}
}else
{
return new PluginResult(PluginResult.Status.INVALID_ACTION);
}
}
private PluginResult downloadUrl(String fileUrl, String dirName, String fileName,String overWirte)
{
File dir = new File(dirName);
if(!dir.exists())
{
dir.mkdirs();
}
File file = new File("mnt/sdcard/" + dirName,fileName);
if(overWirte.equals("false") && file.exists())
{
return new PluginResult(PluginResult.Status.OK,"exist");
}
try
{
URL url = new URL(fileUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.connect();
InputStream is = conn.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
FileOutputStream fos = new FileOutputStream(file);
while((len = is.read(buffer))!=-1)
{
fos.write(buffer,0,len);
}
fos.close();
}
catch (Exception e)
{
e.printStackTrace();
return new PluginResult(PluginResult.Status.ERROR,"error : " + e);
}
return new PluginResult(PluginResult.Status.OK,fileName);
}
}
downloader.js:
function Downloader(){
}
Downloader.prototype.downloadFile = function(fileUrl,dirName,fileName,overwrite,win,fail) {
if(overwrite==false) overwrite="false";
else overwrite="true";
PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl,dirName,fileName,overwrite]);
};
PhoneGap.addConstructor(function() {
PhoneGap.addPlugin("downloader", new Downloader());
PluginManager.addService("Downloader","com.phonegap.Sample.Downloader");
});
html:
<!DOCTYPE html>
<head>
<meta charset=utf-8 />
<title>无标题文档</title>
<script type="text/javascript" src="phonegap.0.9.4.js"></script>
<script type="text/javascript" src="downloader.js"></script>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<link rel="stylesheet" href="jquery.mobile-1.3.0.min.css" />
<script type="text/javascript" src="jquery.mobile-1.3.0.min.js"></script>
<script type="text/javascript">
$(function(){
$("#btn").bind("click",function(){
window.plugins.downloader.downloadFile("http://127.0.0.1:8090/test/1.jpg","cache/","2.jpg",false,function(data){
if(data == "exist"){
alert("File already exist");
}else
{
alert("File saved on sd card")
}
},function(data){
alert("error: "+data);
});
});
});
</script>
</head>
<body>
<a data-role="button" id="btn">下载</a>
</body>