CouchDB에 이미지를 업로드하고 클라이언트와 함께있는 한 업로드하기 전에 크기를 조정할 수있는 가능성을 찾고 있습니다. PLUpload는 그렇게 할 수있는 가능성을 제공하지만 CouchDB와 함께 사용할 수 있는지 궁금합니다.PLUpload를 CouchDB와 함께 사용할 수 있습니까?
2
A
답변
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;
});