我有使用jquery.form.js执行POST附件到Couch文档的代码。这很好,但我真的需要允许用户在表单中输入多个文件,比方说现在5个文件,然后在代码中迭代表单中的五个文件,为每个文件创建一个新的Couch文档和附件。 如果不是仅仅使用jQuery,这是非常困难的。它可以使用Couch“内联附件”完成,但您需要一个服务器端(PHP可能)脚本来Base64编码二进制图像数据。这真的不适合我,因为这是一个Couchapp。jQuery Ajax将附件添加到CouchDB文档
所以以下代码不起作用,它会在jQuery中产生“调用”错误。我的假设是,你不能简单地将引用添加到数据ATTRIB一个二进制文件...
var url= _.couchUrl() + me.photoArgs.db +"/" +
couchDoc._id + "/attachment?rev=" + couchDoc._rev;
$.ajax({
type: "PUT",
url: url,
headers: {
"Content-Length": file.size,
"Content-Type": file.type
},
data: file,
success: function (response) {
console.log("Attachment was uploaded");
me.fileCnt--;
if (me.fileCnt == 0) console.log("Attachment(s) uploaded");
},
error: function (response) {
_.flashError('Attachment ajaxSubmit failed',me,response);
}
});
的代码是从一个更大的函数内部裁剪。我记录了网址和文件,他们都有正确的数据,所以他们不是问题。
有没有人认为上述应该工作?如果是这样,我做错了什么?
非常感谢你的建议:-)
感谢您的回复。我看了一眼Couch的base64.js,但那不符合你的想法。它使用base64而不是二进制图像数据对* strings *进行编码/解码。您的(2)示例还依赖于以base64编码的二进制图像blob。 – Locohost
@Locohost aha,感谢您的注意。我想知道PouchDB如何解决这个问题,因为它应该是常见的。 – Kxepal
如果我将应用程序从沙发(Couchapp)移出并重新转换为普通的Web应用程序,我可以使用一个非常简单的PHP脚本来基于二进制图像数据。 – Locohost