我有使用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