2011-11-15 4 views
17

Quando i file vengono aggiunti voglio avviare automaticamente il processo di caricamento. Ho chiamato la funzione di avvio alla fine di FilesAdded ma non avvia il caricamento.Plupload Avvia automaticamente caricati quando i file aggiunti

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(); 
    }); 

Ecco il mio codice di creazione

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

Può darci alcuni dettagli su ciò che sta accadendo? Il tuo display HTML viene aggiornato? C'è qualcosa nei log del server? – muffinista

risposta

28

Aggiunta up.start() nel vostro legano FilesAdded dovrebbe avviare il caricamento quando si aggiunge un file. Sono andato giù il percorso di chiamare il mio uploader in questo modo (ho avuto problemi farlo nel modo in cui si sta tentando di chiamarlo):

$(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

ho ottenuto plupload.full.min.js errore: 14 Uncaught SYNTAX_ERR: SYNTAX_ERR: DOMException 12, utilizzando up.start() utilizza la versione 2.1.9 – tyan

12

Per me non ha funzionato la versione, ma ha funzionato:

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

Quindi impostare un timer dopo 100 ms per eseguire l'avvio. Sto usando la versione jQuery UI durante la prova e ottenuto questo errore:

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

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

non avrà inizio l'esecuzione di 'start()' continuamente? – Aistis

13

"Assicuratevi di bind dopo l'init in quanto si lega gestori predefiniti."

Quindi il codice:

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

dopo vostro

uploader.init(); 

more information

+2

Questa è la soluzione, grazie – NicoGranelli

+1

dispari! Mi chiedo perché funziona in questo modo – jontro

+1

Questo dovrebbe essere accettato risposta. –

3

Sono stato anche mancarono stesso per me e trovato sotto modo per farlo.

Un nuovo modo per avviare automaticamente il caricamento dei file dopo l'aggiunta di file è sufficiente impostare fedele alla autostart proprietà come di seguito

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

Basta attivare il pulsante di avvio Carica in questo modo

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

Questo caricherà il file senza attendere 100 ms.

+0

questo funziona per me che sto utilizzando la versione 2.1.9 – tyan