2011-11-15 8 views
17

Po dodaniu plików chcę rozpocząć proces wysyłania automatycznie. Wywołałem funkcję startu na końcu FilesAdded, ale to nie uruchamia wysyłania.Plupload Automatyczne uruchamianie wysyłania po dodaniu plików

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

Oto mój kod tworzenie

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

Czy możesz podać szczegółowe informacje o tym, co się dzieje? Czy twój wyświetlacz HTML jest aktualizowany? Czy jest coś w dziennikach serwera? – muffinista

Odpowiedz

28

Dodawanie up.start() w swojej wiążą FilesAdded powinny rozpocząć przesyłanie, gdy plik jest dodawany. Poszedłem na dół szlaku nazywając mój uploader jak tak (miałem problemy robi to tak, jak próbują to nazwać):

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

Mam błąd plupload.full.min.js: 14 Uncaught SYNTAX_ERR: SYNTAX_ERR: DOMException 12, używając up.start() przy użyciu wersji 2.1.9 – tyan

12

Dla mnie to nie działa wersję, ale nie działa:

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

Ustawić timer po 100 ms, aby uruchomić start. używam wersji jQuery UI podczas testowania i dostał ten błąd: „Upewnij się, że wiążą się nim po init ponieważ wiąże domyślne teleskopowe”

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

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

Czy nie zacznie wykonywać 'start()' w sposób ciągły? – Aistis

13

Więc kod:

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

Po

uploader.init(); 

more information

+2

To jest rozwiązanie, dzięki – NicoGranelli

+1

Nieparzysta! Zastanawiam się, dlaczego działa w ten sposób. – jontro

+1

To powinna być akceptowana odpowiedź. –

3

ja też chce tego samego dla mnie i znaleźć poniżej sposób to zrobić.

Nowy sposób, aby automatycznie rozpocząć przesyłanie plików po dodaniu pliku to wystarczy ustawić wierny autostart własności jak poniżej

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

Wystarczy wywołać przycisk start Upload w ten sposób

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

ten prześle plik bez czekania na 100 ms.

+0

to działa dla mnie używam wersji 2.1.9 – tyan