2010-02-18 9 views
6

Entonces, he estado usando este método de carga de archivos por un tiempo, pero parece que Google Gears tiene poca compatibilidad con los navegadores más nuevos que implementan las especificaciones de HTML5. He escuchado la palabra deprecated flotando en unos pocos canales, por lo que estoy buscando un reemplazo que pueda realizar las siguientes tareas y admitir los navegadores nuevos. Siempre puedo caer de nuevo a engranajes/POST de archivos estándar de estos elementos siguientes, pero que mi proceso mucho más simple:Manejando cargas de archivos con JavaScript y Google Gears, ¿hay una mejor solución?

  1. Usuarios DEBE para poder seleccionar varios archivos para cargar en el diálogo.
  2. I DEBE poder recibir actualizaciones de estado sobre la transmisión de un archivo. (Barras de progreso)
  3. Me gustaría ser capaz de utilizar PUT peticiones en lugar de POST
  4. me gustaría ser capaz de conectar fácilmente estos eventos a los elementos HTML existentes utilizando JavaScript. ES DECIR. la selección de archivos debe activarse en un clic en <button>.
  5. Me gustaría poder controlar los parámetros de respuesta/solicitud fácilmente mediante JavaScript.

No estoy seguro si los nuevos navegadores HTML5 tienen soporte para el escritorio/objetos de solicitud de engranajes, o si hay un cargador de flash que tiene estas características que me faltan en mis búsquedas de Google.

Un ejemplo de código de carga que utilizan artes:

// select some files: 
var desktop = google.gears.factory.create('beta.desktop'); 
desktop.openFiles(selectFilesCallback); 

function selectFilesCallback(files) { 
    $.each(files,function(k,file) { 
    // this code actually goes through a queue, and creates some status bars 
    // but it is unimportant to show here... 
    sendFile(file); 
    }); 
} 

function sendFile(file) { 
    google.gears.factory.create('beta.httprequest'); 
    request.open('PUT', upl.url); 
    request.setRequestHeader('filename', file.name); 
    request.upload.onprogress = function(e) { 
    // gives me % status updates... allows e.loaded/e.total 
    }; 
    request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     // completed the upload! 
    } 
    }; 
    request.send(file.blob); 
    return request; 
} 

Editar: aparentemente flash no es capaz de usar peticiones PUT, por lo que han cambiado a un "me gusta" en lugar de un "debe" .

+0

Simplemente haciendo sonar: Firefox 3.6 admite la API de archivos HTML5. Abra esta página en FF 3.6 para obtener una demostración :) http://demos.hacks.mozilla.org/openweb/FileAPI/ –

+0

http://www.element-it.com/multiple-file-upload/flash-uploader. aspx es un control SWF para lo que quieres hacer. –

+0

@Todd Moses - Se ve bien, pero la etiqueta de precio de $ 99 me busca swfupload, ninguno de estos admite solicitudes 'PUT', que tendré que solucionar ... (Estoy bastante seguro de que el soporte para PUT es simplemente falta en flash/flex) – gnarf

Respuesta

1

(generado a partir de un comentario sobre la pregunta original, por sugerencia de askers.)

Plupload es uno de los nuevos chicos de la cuadra y se utiliza el mejor método disponible (HTML 5, Flash, Engranajes, Silverlight) : http://plupload.com/

Cuestiones relacionadas