2011-11-15 303 views
17

添加文件時,我想自動啓動上傳過程。我在FilesAdded結尾處調用了啓動函數,但它不啓動上傳。Plupload當添加文件時自動啓動上傳

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

這裏是我創建代碼

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

你能否提供一些有關正在發生的事情的細節?您的HTML顯示是否更新?服務器日誌中是否有任何內容? – muffinista

回答

28

在FilesAdded綁定添加up.start()當添加一個文件應該開始上傳。我已經走了下來叫我上載像這樣的路線(我有問題的話你的方式試圖將它命名):

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

我得到錯誤plupload.full.min.js:14未捕獲SYNTAX_ERR:SYNTAX_ERR:DOMException 12,使用up.start()使用版本2.1.9 – tyan

12

對我來說,沒有工作,你的版本,但沒有工作:

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

因此,在100 ms後設置一個定時器來執行啓動。 我使用jQuery UI的版本,而在測試和得到這個錯誤:

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

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

它不會開始執行'start()'嗎? – Aistis

13

「確保你,因爲它默認綁定的處理程序初始化後綁定。」

所以,你的代碼:

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

後您的

uploader.init(); 

more information

+2

這是解決方案,謝謝 – NicoGranelli

+1

奇!我想知道它爲什麼這樣工作 – jontro

+1

這應該被接受的答案。 –

3

我也想同我和下面的方式來做到這一點發現。

一種新的方式來自動啓動文件上傳後添加文件只需要設置爲TRUE autostart財產像下面

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

通過這種方式

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

這只是觸發開始上傳按鈕將無需等待100毫秒即可上傳文件。

+0

這對我有用我使用的是版本2.1.9 – tyan