2011-08-24 1 views
2

CouchDB에 이미지를 업로드하고 클라이언트와 함께있는 한 업로드하기 전에 크기를 조정할 수있는 가능성을 찾고 있습니다. PLUpload는 그렇게 할 수있는 가능성을 제공하지만 CouchDB와 함께 사용할 수 있는지 궁금합니다.PLUpload를 CouchDB와 함께 사용할 수 있습니까?

답변

2

많은 노력과 독서 끝에 마침내 PLUpload를 사용하여 CouchDB에 사진을 업로드 할 수있었습니다. 주된 문제점은 문서화되지 않은 "file_data_name"속성이있어서 CouchDB의 필요에 맞게 수동으로 설정해야한다는 것입니다. 기본값은 "name"이지만 CouchDB는 "_attachments"를 기대합니다. 플래시 런타임의 소스 코드를 검사하여 해당 속성을 발견했습니다.

다음은 내가 PLUpload 초기화에 사용되는 자바 스크립트가 :

$("form#pluploadForm #uploader").plupload({ 
    // General settings 
    runtimes : 'flash,silverlight,html5', 
    url : 'http://your.path.to.couchdb.com/database/[documentid]', 
    max_file_size : '10mb', 
    unique_names : true, 
    file_data_name : "_attachments", 

    // Resize images on clientside if we can 
    resize : {width : 320, height : 240, quality : 90}, 

    // Specify what files to browse for 
    filters : [ 
    {title : "Image files", extensions : "jpg,gif,png"}, 
    {title : "Zip files", extensions : "zip"} 
    ], 

    // Flash settings 
    flash_swf_url : 'js/plupload.flash.swf', 

    // Silverlight settings 
    silverlight_xap_url : 'js/plupload.silverlight.xap', 

    multipart : true, 
    multipart_params : { 
    description: "uploadedViaPlupload", 
    _rev: "[the current revision of your document]", 
    } 
}); 

그러나이 방법으로는 하나 개의 문서에 하나 개의 이미지 만 가능하다. 여러 문서로 업로드하는 것은 작동하지 않지만 실제로 시도하지는 않았습니다 (아직).

1

파일을 업로드하기 전에 소파 인스턴스로 작업하려면 PLUploader의 BeforeUpload 이벤트를 무시하십시오. 아래의 방법에서는 새 문서 (jquery.couch.js 사용)를 작성하고 응답을 받고 새 문서의 _id 및 _rev를 사용하여 PLUploader 인스턴스 옵션을 설정합니다.

uploader.bind('BeforeUpload', function(up, file) { 
    $db.saveDoc({ 
    users : ['all'] 
    }, { 
    success : function(response) { 
     if(response.ok) { 
     up.settings.url = 'http://127.0.0.1:5984/filesystem/' + response.id; 
     up.settings.multipart_params._rev = response.rev; 
     up.trigger("UploadFile", file); 
     } 
    } 
    }); 
    return false; 
});