2011-11-15 12 views
17

Cuando se agreguen archivos, quiero comenzar el proceso de carga automáticamente. Llamé a la función de inicio al final de Archivos Agregados, pero no comienza la carga.Plupload Iniciar carga automáticamente cuando se agreguen archivos

uploader.bind('FilesAdded', function(up, files) { 
     var str = ""; 
     for (var i in files) { 
     str += '<div id="' + files[i].id + '">' + files[i].name + ' (' + plupload.formatSize(files[i].size) + ') <b></b></div>'; 
     } 
     $('#filelist').html(str); 
     up.refresh(); 
     up.start(); 
    }); 

Aquí está mi código de creación

var uploader = new plupload.Uploader({ 
     runtimes: 'html5,flash,silverlight', 
     autostart : true, 
     url: '<%= images_path %>', 
     max_file_size: '10mb', 
     multipart: true, 
     browse_button: "pickfiles", 
     container: "the-uploader", 
     drop_element : "drop-area", 
     multipart_params: { 
     '_http_accept': 'application/javascript', 
     '<%=request_forgery_protection_token%>': '<%=form_authenticity_token%>', 
     '<%=request.session_options[:key]%>': '<%=request.session_options[:id]%>' 
     }, 
     filters: [ 
     {title: "Images", extensions: "avi,jpg,jpeg,png,zip"} 
     ], 
    }); 
+0

¿Puede dar algunos detalles sobre lo que está sucediendo? ¿Tu pantalla HTML se actualiza? ¿Hay algo en los registros del servidor? – muffinista

Respuesta

28

Adición up.start() se unen en su FilesAdded debe iniciar la carga cuando se añade un archivo. He ido por el camino de llamar a mi cargador como tal (que tenía problemas para hacerlo de la manera que está tratando de llamarlo):

$(function() { 
    // Setup html5 version 
    $("#html5_uploader").pluploadQueue({ 
     // General settings 
     runtimes : 'html5', 
     url : 'upload.php', 
     max_file_size : '10mb', 
     chunk_size : '1mb', 
     unique_names : true, 
     dragdrop : true, 
     multiple_queues : false, 
     multi_selection : false, 
     max_file_count : 1, 

     // Specify what files to browse for 
     filters : [ 
     {title : "Text files", extensions : "txt"} 
     ], 

     init : { 
     FilesAdded: function(up, files) { 
      up.start(); 
     }, 
     UploadComplete: function(up, files) { 
      $.each(files, function(i, file) { 
      // Do stuff with the file. There will only be one file as it uploaded straight after adding! 
      }); 
     } 
     } 
    }); 
    }); 
+0

recibí el error plupload.full.min.js: 14 SYNTAX_ERR no capturado: SYNTAX_ERR: DOMException 12, usando up.start() usando la versión 2.1.9 – tyan

12

Para mí no funcionó su versión, pero funcionó:

FilesAdded: function(up, files) { 
    setTimeout(function() { up.start(); }, 100); 
}, 

Configure entonces un temporizador después de 100 ms para ejecutar el inicio. estoy usando la versión de jQuery UI mientras que las pruebas y dio este mensaje:

g("#" + l.id).position() is null 

/js/plupload/js/jquery.ui.plupload/jquery.ui.plupload.js 
+0

¿No comenzará a ejecutar 'start()' continuamente? – Aistis

13

"Asegúrese de que se unen después de la inicialización ya que se une controladores predeterminados."

Así que su código:

uploader.bind('FilesAdded', function(up, files) {...}); 

después de su

uploader.init(); 

more information

+2

Esta es la solución, gracias – NicoGranelli

+1

¡Impar! Me pregunto por qué funciona de esta manera – jontro

+1

Esto debería ser aceptado como respuesta. –

3

también me quedé con ganas mismo para mí y que se encuentra debajo manera de hacerlo.

Una nueva forma para iniciar automáticamente la carga de archivos después de añadir archivo es apenas necesita fijar fiel a autostart propiedad, como a continuación

$("#uploader").plupload({ 
    ..... 
    autostart: true, 
    ..... 
}); 
2

Sólo desencadenar el botón Iniciar carga de esta manera

FilesAdded: function(up, files) { 
    $('#fileupload_start').click(); 
}, 

Este cargará el archivo sin esperar 100 ms.

+0

esto funciona para mí estoy usando la versión 2.1.9 – tyan

Cuestiones relacionadas