mirror of
https://github.com/apache/cordova-android.git
synced 2025-01-19 15:12:51 +08:00
90 lines
2.8 KiB
JavaScript
90 lines
2.8 KiB
JavaScript
/*
|
|
* PhoneGap is available under *either* the terms of the modified BSD license *or* the
|
|
* MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
|
|
*
|
|
* Copyright (c) 2005-2010, Nitobi Software Inc.
|
|
* Copyright (c) 2010-2011, IBM Corporation
|
|
*/
|
|
|
|
if (!PhoneGap.hasResource("filetransfer")) {
|
|
PhoneGap.addResource("filetransfer");
|
|
|
|
/**
|
|
* FileTransfer uploads a file to a remote server.
|
|
* @constructor
|
|
*/
|
|
var FileTransfer = function() {};
|
|
|
|
/**
|
|
* FileUploadResult
|
|
* @constructor
|
|
*/
|
|
var FileUploadResult = function() {
|
|
this.bytesSent = 0;
|
|
this.responseCode = null;
|
|
this.response = null;
|
|
};
|
|
|
|
/**
|
|
* FileTransferError
|
|
* @constructor
|
|
*/
|
|
var FileTransferError = function() {
|
|
this.code = null;
|
|
};
|
|
|
|
FileTransferError.FILE_NOT_FOUND_ERR = 1;
|
|
FileTransferError.INVALID_URL_ERR = 2;
|
|
FileTransferError.CONNECTION_ERR = 3;
|
|
|
|
/**
|
|
* Given an absolute file path, uploads a file on the device to a remote server
|
|
* using a multipart HTTP request.
|
|
* @param filePath {String} Full path of the file on the device
|
|
* @param server {String} URL of the server to receive the file
|
|
* @param successCallback (Function} Callback to be invoked when upload has completed
|
|
* @param errorCallback {Function} Callback to be invoked upon error
|
|
* @param options {FileUploadOptions} Optional parameters such as file name and mimetype
|
|
*/
|
|
FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, debug) {
|
|
|
|
// check for options
|
|
var fileKey = null;
|
|
var fileName = null;
|
|
var mimeType = null;
|
|
var params = null;
|
|
var chunkedMode = true;
|
|
if (options) {
|
|
fileKey = options.fileKey;
|
|
fileName = options.fileName;
|
|
mimeType = options.mimeType;
|
|
if (options.chunkedMode != null || typeof options.chunkedMode != "undefined") {
|
|
chunkedMode = options.chunkedMode;
|
|
}
|
|
if (options.params) {
|
|
params = options.params;
|
|
}
|
|
else {
|
|
params = {};
|
|
}
|
|
}
|
|
|
|
PhoneGap.exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, debug, chunkedMode]);
|
|
};
|
|
|
|
/**
|
|
* Options to customize the HTTP request used to upload files.
|
|
* @constructor
|
|
* @param fileKey {String} Name of file request parameter.
|
|
* @param fileName {String} Filename to be used by the server. Defaults to image.jpg.
|
|
* @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg.
|
|
* @param params {Object} Object with key: value params to send to the server.
|
|
*/
|
|
var FileUploadOptions = function(fileKey, fileName, mimeType, params) {
|
|
this.fileKey = fileKey || null;
|
|
this.fileName = fileName || null;
|
|
this.mimeType = mimeType || null;
|
|
this.params = params || null;
|
|
};
|
|
}
|