2012-03-02 2 views
38

나는 ajax 파일을 업로드하기 위해 plupload을 사용하고 있습니다. 이제 plupload.Uploader 클래스에는 많은 옵션이 있지만 추가 데이터는 없습니다. 예를 들어PLupload를 사용하여 추가 데이터를 보내는 방법은 무엇입니까?

:

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

내가 뭘 실현하려 노력하고있어 내가 모든 업로드 가 저장되는 내 서버의 폴더가 있습니다. 폴더 안에 파일을 업로드 한 각 사용자의 하위 폴더를 만들려면 폴더 안에 있습니다. 어떻게 plupload.Uploader 인스턴스에 사용자의 ID와 같은 데이터를 추가 할 수 있습니까? 또는 컨테이너 div 안에 폼을 래핑하면 $ _REQUEST에서 볼 수 있습니까? 아니면 다른 방법으로이 문제를 해결할 수 있습니까?

답변

71

multipart_params 설정을 사용해 보셨습니까? 지금처럼 plupload.Uploader에 추가 옵션을 추가 : 다음 업로드 (기본적으로 upload.php로)를 처리하는 파일의 값을 처리해야합니다

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

. 값이 $_POST에 의해 포착 된 것으로 생각하지만 $_REQUEST을 사용해도됩니다.

나는 그 값을 "name1" : "value1" 대신에 할당하기 위해 jQuery를 사용했습니다. "name1" : $("#name1").val(),과 같은 것을 사용할 수 있습니다. 여기서 # name1은 페이지의 다른 곳에서의 입력 일 수 있습니다.

일부 설정의 경우 Plupload의 설명서가 약간 희미합니다.

+3

큰 도움 감사합니다! – liveandream

+22

이벤트 중에 (그리고'uploader.start()'직전에) "즉석에서"나를 위해, 나는 uploader.settings.multipart_params [ "name1"] = calcValue()'를 설정했다. – Jonno

+0

대기열에 매개 변수를 저장하는 데 유용한 도움말입니다. http://www.bennadel.com/blog/2506-storing-per-file-multipart-params-in-the-plupload-queue.htm – Ecropolis

6

당신은 uploader.settings.multipart_params["name1"] = yourValue;하지만 "name1"은 업 로더 설정에서 선언해야 사용할 수 있습니다 또한

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

을 사용하여 단지 얻을 변수로 전달할 수 있습니다

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

잘 했어. BeforeUpload 및 양식 값을 청취하고 이전에 선언 된 mulitpart_params에 첨부 할 수 있습니다. 나는이 방법이 효과가 있고 효과가 있음을 확인했다. –

2

. 업로드 동적으로 모든 파일에 매개 변수를 추가해야하는 경우

2

당신은이 작업을 수행 할 수 있습니다

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

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

    }; 
});