我有使用jquery.form.js对Couch文档进行POST附件的代码。这一切都很好,但我真的需要允许用户在表单中输入多个文件,现在说5个文件,然后在代码中迭代表单中的5个文件,为每个文件创建一个新的Couch文档和附件。 如果不是仅仅使用jQuery ,这是很难的。它可以使用Couch“内联附件”完成,但是你需要一个服务器端(可能是PHP)脚本来对Base64编码二进制图像数据。这对我来说真的不是一个选择,因为这是一个Couchapp。
所以以下代码不起作用,它在jQuery中生成“调用”错误。我的假设是你不能简单地在数据属性中添加二进制文件的引用...
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);
}
});
代码从较大的函数内部剪裁。我已经记录了网址和文件,它们都有正确的数据,所以它们不是问题。
有人认为上面的应该有效吗?如果是这样,我做错了什么?
非常感谢您的建议: - )
答案 0 :(得分:0)
您有两种选择:
使用内联附件。您不必使用PHP来解码base64数据:只需添加到您的CouchApp /_utils/script/base64.js
文件(是的,它与CouchDB Futon一起提供)作为CommonJS模块,您就可以了。
使用Multipart API(向下滚动一下以获取示例)。我没有太多使用jQuery来快速制作原型的经验,但this question你可能会觉得有用。
更新:找到good working example如何使用多部分API将多个二进制附件上传到CouchDB。