我正在寻找将图像上传到我的 CouchDB 并在上传之前调整它们大小的可能性,只要它们仍在客户端。PLUpload 提供了这样做的可能性,但我想知道是否可以将它与 CouchDB 一起使用。
问问题
211 次
2 回答
2
经过大量尝试和阅读后,我终于设法使用 PLUpload 将图片上传到 CouchDB。主要问题是有一个未记录的属性“file_data_name”必须手动设置以适应 CouchDB 的需求。默认值为“name”,但 CouchDB 需要“_attachments”。我只是通过检查 Flash 运行时的源代码才找到该属性。
下面是我用于初始化 PLUpload 的 javascript:
$("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]",
}
});
但是使用这种方法,只能将一个图像对应一个文档。上传到多个文档不起作用,但我还没有真正尝试过(还)。
于 2011-08-26T18:57:38.203 回答
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;
});
于 2011-10-18T18:55:34.327 回答