mirror of
https://github.com/apache/cordova-android.git
synced 2025-05-10 21:07:02 +08:00
added download() to the filetransfer
This commit is contained in:
parent
853a734f82
commit
8904c67fb5
@ -83,6 +83,17 @@ FileTransfer.prototype.upload = function(filePath, server, successCallback, erro
|
|||||||
PhoneGap.exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, debug, chunkedMode]);
|
PhoneGap.exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, debug, chunkedMode]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Downloads a file form a given URL and saves it to the specified directory.
|
||||||
|
* @param sourceUrl {String} URL of the server to receive the file
|
||||||
|
* @param targetFile {String} Full path of the file on the device
|
||||||
|
* @param successCallback (Function} Callback to be invoked when upload has completed
|
||||||
|
* @param errorCallback {Function} Callback to be invoked upon error
|
||||||
|
*/
|
||||||
|
FileTransfer.prototype.download = function(sourceUrl, targetFile, successCallback, errorCallback) {
|
||||||
|
PhoneGap.exec(successCallback, errorCallback, 'FileTransfer', 'download', [targetFile, sourceUrl]);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Options to customize the HTTP request used to upload files.
|
* Options to customize the HTTP request used to upload files.
|
||||||
* @constructor
|
* @constructor
|
||||||
|
@ -20,8 +20,10 @@ package com.phonegap;
|
|||||||
|
|
||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
@ -80,6 +82,8 @@ public class FileTransfer extends Plugin {
|
|||||||
return new PluginResult(PluginResult.Status.JSON_EXCEPTION, "Missing filename or server name");
|
return new PluginResult(PluginResult.Status.JSON_EXCEPTION, "Missing filename or server name");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (action.equals("upload")) {
|
||||||
// Setup the options
|
// Setup the options
|
||||||
String fileKey = null;
|
String fileKey = null;
|
||||||
String fileName = null;
|
String fileName = null;
|
||||||
@ -88,16 +92,16 @@ public class FileTransfer extends Plugin {
|
|||||||
fileKey = getArgument(args, 2, "file");
|
fileKey = getArgument(args, 2, "file");
|
||||||
fileName = getArgument(args, 3, "image.jpg");
|
fileName = getArgument(args, 3, "image.jpg");
|
||||||
mimeType = getArgument(args, 4, "image/jpeg");
|
mimeType = getArgument(args, 4, "image/jpeg");
|
||||||
|
|
||||||
try {
|
|
||||||
JSONObject params = args.optJSONObject(5);
|
JSONObject params = args.optJSONObject(5);
|
||||||
boolean trustEveryone = args.optBoolean(6);
|
boolean trustEveryone = args.optBoolean(6);
|
||||||
boolean chunkedMode = args.getBoolean(7);
|
boolean chunkedMode = args.getBoolean(7);
|
||||||
|
|
||||||
if (action.equals("upload")) {
|
|
||||||
FileUploadResult r = upload(file, server, fileKey, fileName, mimeType, params, trustEveryone, chunkedMode);
|
FileUploadResult r = upload(file, server, fileKey, fileName, mimeType, params, trustEveryone, chunkedMode);
|
||||||
Log.d(LOG_TAG, "****** About to return a result from upload");
|
Log.d(LOG_TAG, "****** About to return a result from upload");
|
||||||
return new PluginResult(PluginResult.Status.OK, r.toJSONObject());
|
return new PluginResult(PluginResult.Status.OK, r.toJSONObject());
|
||||||
|
} else if (action.equals("download")) {
|
||||||
|
String r = download(file, server);
|
||||||
|
Log.d(LOG_TAG, "****** About to return a result from download");
|
||||||
|
return new PluginResult(PluginResult.Status.OK, r);
|
||||||
} else {
|
} else {
|
||||||
return new PluginResult(PluginResult.Status.INVALID_ACTION);
|
return new PluginResult(PluginResult.Status.INVALID_ACTION);
|
||||||
}
|
}
|
||||||
@ -362,6 +366,47 @@ public class FileTransfer extends Plugin {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Downloads a file form a given URL and saves it to the specified directory.
|
||||||
|
*
|
||||||
|
* @param server URL of the server to receive the file
|
||||||
|
* @param file Full path of the file on the file system
|
||||||
|
* @return String containing the path to the downloaded file
|
||||||
|
*/
|
||||||
|
public String download(String filePath, String sourceUrl) throws IOException {
|
||||||
|
try {
|
||||||
|
File file = new File(filePath);
|
||||||
|
file.getParentFile().mkdirs();
|
||||||
|
|
||||||
|
URL url = new URL(sourceUrl);
|
||||||
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
connection.setRequestMethod("GET");
|
||||||
|
connection.setDoOutput(true);
|
||||||
|
connection.connect();
|
||||||
|
|
||||||
|
Log.d(LOG_TAG, "Download file:" + url);
|
||||||
|
|
||||||
|
InputStream inputStream = connection.getInputStream();
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
int len1 = 0;
|
||||||
|
|
||||||
|
FileOutputStream outputStream = new FileOutputStream(file);
|
||||||
|
|
||||||
|
while ( (len1 = inputStream.read(buffer)) > 0 ) {
|
||||||
|
outputStream.write(buffer,0, len1);
|
||||||
|
}
|
||||||
|
|
||||||
|
outputStream.close();
|
||||||
|
|
||||||
|
Log.d(LOG_TAG, "Saved file: " + filePath);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Log.d(LOG_TAG, e.getMessage(), e);
|
||||||
|
throw new IOException("Error while downloading");
|
||||||
|
}
|
||||||
|
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an input stream based on file path or content:// uri
|
* Get an input stream based on file path or content:// uri
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user