12 KiB
cordova-plugin-file-transfer
Documentación del plugin: <doc/index.md>
Este plugin te permite cargar y descargar archivos.
Este plugin define global FileTransfer
, FileUploadOptions
constructores.
Aunque en el ámbito global, no están disponibles hasta después de la deviceready
evento.
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(FileTransfer);
}
Instalación
cordova plugin add cordova-plugin-file-transfer
Plataformas soportadas
- Amazon fire OS
- Android
- BlackBerry 10
- Explorador
- Firefox OS **
- iOS
- Windows Phone 7 y 8 *
- Windows 8
- Windows
\ * *No soporta onprogress
ni abort()
*
\ ** *No soporta onprogress
*
FileTransfer
El objeto FileTransfer
proporciona una manera para subir archivos utilizando una varias parte solicitud HTTP POST o PUT y descargar archivos, así.
Propiedades
- OnProgress: llama con un
ProgressEvent
cuando se transfiere un nuevo paquete de datos. (Función)
Métodos
-
cargar: envía un archivo a un servidor.
-
Descargar: descarga un archivo del servidor.
-
abortar: aborta una transferencia en curso.
subir
Parámetros:
-
fileURL: URL de Filesystem que representa el archivo en el dispositivo. Para atrás compatibilidad, esto también puede ser la ruta de acceso completa del archivo en el dispositivo. (Ver [hacia atrás compatibilidad notas] debajo)
-
servidor: dirección URL del servidor para recibir el archivo, como codificada por
encodeURI()
. -
successCallback: una devolución de llamada que se pasa un
FileUploadResult
objeto. (Función) -
errorCallback: una devolución de llamada que se ejecuta si se produce un error recuperar la
FileUploadResult
. Invocado con unFileTransferError
objeto. (Función) -
Opciones: parámetros opcionales (objeto). Teclas válidas:
- fileKey: el nombre del elemento de formulario. Por defecto es
file
. (DOMString) - nombre de archivo: el nombre del archivo a utilizar al guardar el archivo en el servidor. Por defecto es
image.jpg
. (DOMString) - httpMethod: método HTTP el utilizar - o
PUT
oPOST
. Por defecto esPOST
. (DOMString) - mimeType: el tipo mime de los datos para cargar. Por defecto es
image/jpeg
. (DOMString) - params: un conjunto de pares clave/valor opcional para pasar en la petición HTTP. (Objeto)
- chunkedMode: Si desea cargar los datos en modo de transmisión fragmentado. Por defecto es
true
. (Boolean) - headers: un mapa de nombre de encabezado/valores de encabezado Utilice una matriz para especificar más de un valor. En iOS FireOS y Android, si existe un encabezado llamado Content-Type, datos de un formulario multipart no se utilizará. (Object)
- httpMethod: HTTP el método a utilizar por ejemplo POST o poner. Por defecto
el POST
. (DOMString)
- fileKey: el nombre del elemento de formulario. Por defecto es
-
trustAllHosts: parámetro opcional, por defecto es
false
. Si establece entrue
, acepta todos los certificados de seguridad. Esto es útil ya que Android rechaza certificados autofirmados seguridad. No se recomienda para uso productivo. Compatible con iOS y Android. (boolean)
Ejemplo
// !! Assumes variable fileURL contains a valid URL to a text file on the device,
// for example, cdvfile://localhost/persistent/path/to/file.txt
var win = function (r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
var fail = function (error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
options.mimeType = "text/plain";
var params = {};
params.value1 = "test";
params.value2 = "param";
options.params = params;
var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options);
Ejemplo con cabeceras de subir y eventos de progreso (Android y iOS solamente)
function win(r) {
console.log("Code = " + r.responseCode);
console.log("Response = " + r.response);
console.log("Sent = " + r.bytesSent);
}
function fail(error) {
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
var uri = encodeURI("http://some.server.com/upload.php");
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName=fileURL.substr(fileURL.lastIndexOf('/')+1);
options.mimeType="text/plain";
var headers={'headerParam':'headerValue'};
options.headers = headers;
var ft = new FileTransfer();
ft.onprogress = function(progressEvent) {
if (progressEvent.lengthComputable) {
loadingStatus.setPercentage(progressEvent.loaded / progressEvent.total);
} else {
loadingStatus.increment();
}
};
ft.upload(fileURL, uri, win, fail, options);
FileUploadResult
A FileUploadResult
objeto se pasa a la devolución del éxito de la FileTransfer
del objeto upload()
método.
Propiedades
-
bytesSent: el número de bytes enviados al servidor como parte de la carga. (largo)
-
responseCode: código de respuesta HTTP el devuelto por el servidor. (largo)
-
respuesta: respuesta el HTTP devuelto por el servidor. (DOMString)
-
cabeceras: cabeceras de respuesta HTTP el por el servidor. (Objeto)
- Actualmente compatible con iOS solamente.
iOS rarezas
- No es compatible con
responseCode
obytesSent
.
descargar
Parámetros:
-
fuente: dirección URL del servidor para descargar el archivo, como codificada por
encodeURI()
. -
objetivo: Filesystem url que representa el archivo en el dispositivo. Para atrás compatibilidad, esto también puede ser la ruta de acceso completa del archivo en el dispositivo. (Ver [hacia atrás compatibilidad notas] debajo)
-
successCallback: una devolución de llamada que se pasa un
FileEntry
objeto. (Función) -
errorCallback: una devolución de llamada que se ejecuta si se produce un error al recuperar los
FileEntry
. Invocado con unFileTransferError
objeto. (Función) -
trustAllHosts: parámetro opcional, por defecto es
false
. Si establece entrue
, acepta todos los certificados de seguridad. Esto es útil porque Android rechaza certificados autofirmados seguridad. No se recomienda para uso productivo. Compatible con iOS y Android. (boolean) -
Opciones: parámetros opcionales, actualmente sólo soporta cabeceras (como autorización (autenticación básica), etc.).
Ejemplo
// !! Assumes variable fileURL contains a valid URL to a path on the device,
// for example, cdvfile://localhost/persistent/path/to/downloads/
var fileTransfer = new FileTransfer();
var uri = encodeURI("http://some.server.com/download.php");
fileTransfer.download(
uri,
fileURL,
function(entry) {
console.log("download complete: " + entry.toURL());
},
function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("upload error code" + error.code);
},
false,
{
headers: {
"Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
}
}
);
Rarezas de WP8
- Descargar pide se almacena en caché por aplicación nativa. Para evitar el almacenamiento en caché, pasar
if-Modified-Since
encabezado para descargar el método.
abortar
Aborta a una transferencia en curso. El callback onerror se pasa un objeto FileTransferError que tiene un código de error de FileTransferError.ABORT_ERR.
Ejemplo
// !! Assumes variable fileURL contains a valid URL to a text file on the device,
// for example, cdvfile://localhost/persistent/path/to/file.txt
var win = function(r) {
console.log("Should not be called.");
}
var fail = function(error) {
// error.code == FileTransferError.ABORT_ERR
alert("An error has occurred: Code = " + error.code);
console.log("upload error source " + error.source);
console.log("upload error target " + error.target);
}
var options = new FileUploadOptions();
options.fileKey="file";
options.fileName="myphoto.jpg";
options.mimeType="image/jpeg";
var ft = new FileTransfer();
ft.upload(fileURL, encodeURI("http://some.server.com/upload.php"), win, fail, options);
ft.abort();
FileTransferError
A FileTransferError
objeto se pasa a un callback de error cuando se produce un error.
Propiedades
-
código: uno de los códigos de error predefinido enumerados a continuación. (Número)
-
fuente: URL a la fuente. (String)
-
objetivo: URL a la meta. (String)
-
HTTP_STATUS: código de estado HTTP. Este atributo sólo está disponible cuando se recibe un código de respuesta de la conexión HTTP. (Número)
-
cuerpo Cuerpo de la respuesta. Este atributo sólo está disponible cuando se recibe una respuesta de la conexión HTTP. (String)
-
excepción: cualquier e.getMessage o e.toString (String)
Constantes
- 1 =
FileTransferError.FILE_NOT_FOUND_ERR
- 2 =
FileTransferError.INVALID_URL_ERR
- 3 =
FileTransferError.CONNECTION_ERR
- 4 =
FileTransferError.ABORT_ERR
- 5 =
FileTransferError.NOT_MODIFIED_ERR
Al revés notas de compatibilidad
Versiones anteriores de este plugin sólo aceptaría dispositivo-absoluto-archivo-rutas como la fuente de carga, o como destino para las descargas. Estos caminos normalmente sería de la forma
/var/mobile/Applications/<application UUID>/Documents/path/to/file (iOS)
/storage/emulated/0/path/to/file (Android)
Para atrás compatibilidad, estos caminos son aceptados todavía, y si su solicitud ha grabado caminos como éstos en almacenamiento persistente, entonces pueden seguir utilizarse.
Estos caminos fueron expuestos anteriormente en el fullPath
propiedad de FileEntry
y DirectoryEntry
objetos devueltos por el plugin de archivo. Las nuevas versiones del archivo plugin, sin embargo, ya no exponen estos caminos a JavaScript.
Si va a actualizar a una nueva (1.0.0 o más reciente) versión del archivo y previamente han estado utilizando entry.fullPath
como argumentos para download()
o upload()
, entonces tendrá que cambiar su código para usar URLs de sistema de archivos en su lugar.
FileEntry.toURL()
y DirectoryEntry.toURL()
devolver un filesystem dirección URL de la forma
cdvfile://localhost/persistent/path/to/file
que puede ser utilizado en lugar de la ruta del archivo absoluta tanto en download()
y upload()
los métodos.