2012-03-02 34 views
38

Tôi đang sử dụng plupload để tải lên tệp ajax. Bây giờ, lớp plupload.Uploader có nhiều tùy chọn nhưng không có dữ liệu bổ sung nào.Làm thế nào để gửi dữ liệu bổ sung bằng cách sử dụng PLupload?

Ví dụ:

var uploader = new plupload.Uploader({ 
    runtimes : 'gears,html5,flash,silverlight,browserplus', 
    browse_button : 'pickfiles', 
    container : 'contact_container', 
    max_file_size : '10mb', 
    url : 'upload.php', 
    flash_swf_url : '/plupload/js/plupload.flash.swf', 
    silverlight_xap_url : '/plupload/js/plupload.silverlight.xap', 
    filters : [ 
     {title : "Image files", extensions : "jpg,gif,png"}, 
     {title : "Zip files", extensions : "zip"} 
    ], 
    resize : {width : 320, height : 240, quality : 90} 
}); 

gì tôi đang cố gắng để đạt được là tôi có một thư mục trong máy chủ của tôi mà tất cả các cập nhật đang được lưu. Tôi đã neeed bên trong thư mục để tạo một thư mục con cho mỗi người dùng đã tải lên các tập tin đó. Làm cách nào để thêm dữ liệu như id của người dùng vào bản sao của plupload.Uploader? Hoặc nếu tôi sẽ bao bọc một biểu mẫu bên trong div vùng chứa, tôi có thể xem nó trong $ _REQUEST không? Hoặc có cách nào khác tôi có thể đạt được điều này?

Trả lời

71

Bạn đã thử sử dụng cài đặt cho multipart_params chưa? Thêm một tùy chọn bổ sung để plupload.Uploader bạn như vậy:

var uploader = new plupload.Uploader({ 
    runtimes : 'gears,html5,flash,silverlight,browserplus', 
    browse_button : 'pickfiles', 
    container : 'contact_container', 
    max_file_size : '10mb', 
    url : 'upload.php', 
    flash_swf_url : '/plupload/js/plupload.flash.swf', 
    silverlight_xap_url : '/plupload/js/plupload.silverlight.xap', 
    filters : [ 
     {title : "Image files", extensions : "jpg,gif,png"}, 
     {title : "Zip files", extensions : "zip"} 
    ], 
    resize : {width : 320, height : 240, quality : 90}, 
    multipart_params : { 
     "name1" : "value1", 
     "name2" : "value2" 
    } 
}); 

Sau đó bạn sẽ cần phải xử lý các giá trị trong các tập tin để xử lý việc tải lên (upload.php theo mặc định). Tôi nghĩ rằng các giá trị được chụp bởi $_POST nhưng bạn có thể sử dụng $_REQUEST chỉ để đảm bảo.

Tôi đã sử dụng jQuery để gán giá trị khi đang di chuyển, vì vậy thay vì "name1" : "value1" bạn có thể sử dụng một cái gì đó như "name1" : $("#name1").val(), trong đó # name1 có thể là đầu vào ở nơi khác trên trang.

Tài liệu của Plupload hơi thưa thớt đối với một số cài đặt này.

+3

HUGE TRỢ GIÚP Cảm ơn! – liveandream

+22

Đối với tôi "trên bay" có nghĩa là trong một sự kiện (và ngay trước 'uploader.start()'), tôi đặt 'uploader.settings.multipart_params [" name1 "] = calcValue()'. – Jonno

+0

Bài viết hay về lưu trữ thông số trong hàng đợi. http://www.bennadel.com/blog/2506-storing-per-file-multipart-params-in-the-plupload-queue.htm – Ecropolis

6

Bạn có thể sử dụng uploader.settings.multipart_params["name1"] = yourValue; nhưng "name1" phải được khai báo trong uploader config:

multipart_params : { 
    "name1" : "value1", 
    "name2" : "value2" 
} 
+0

Thực hiện tốt. Có thể nghe trước khi tải lên và truy vấn các giá trị biểu mẫu và đính kèm chúng vào mulitpart_params đã khai báo trước đây. Tôi đã xác nhận phương pháp này hoạt động và hoạt động tốt. –

2

Bạn cũng có thể sử dụng

uploader.settings.url = "upload.php?param1=whatever" 

và chỉ cần vượt qua nó như một được biến.

2

Nếu bạn cần phải tự động thêm các thông số trên tất cả các tập tin tải lên, bạn có thể làm điều này:

uploader.bind('BeforeUpload', function(up, file) { 
    up.settings.multipart_params = { 

     "parameter1": "value1", 
     "paremeter2": "value2" 

    }; 
}); 
Các vấn đề liên quan