У меня есть код, который вставляет вложения POST в Douch Docs с помощью jquery.form.js. Это все хорошо, но мне действительно нужно разрешить пользователю вводить несколько файлов в форме, скажем, 5 файлов, а затем в коде итератировать пять файлов в форме, создав один новый Doc-файл и вложение для каждого файла. Это veeeery сложно, если не невозможно, используя только jQuery. Это можно сделать с помощью встроенных вложений Couch, но тогда вам понадобится сценарий на стороне сервера (возможно PHP), чтобы Base64 кодировал данные двоичного изображения. Это действительно не вариант для меня, потому что это Couchapp.jQuery Ajax PUT приложение к CouchDB doc
Так следующий код не работает, он генерирует ошибку «вызова» в 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);
}
});
Код вырезал из внутри большей функции. Я зарегистрировал URL-адрес и файл, они оба имеют правильные данные, поэтому они не являются проблемой.
Кто-нибудь думает, что выше должен работать? Если да, то что я делаю неправильно?
Большое спасибо за ваши советы :-)
Спасибо за ответ. Я посмотрел на base64.js в Couch, но это не делает то, что вы думаете. Он кодирует/декодирует * строки * в base64, а не бинарные данные изображения. Ваш пример (2) также основан на двоичном изображении blob, закодированном как base64. – Locohost
@ Locohost aha, спасибо за заметки. Интересно, как PouchDB решает такую проблему, поскольку это должно быть общим для нее. – Kxepal
Если бы я переместил приложение из Couchapp (Couchapp) и вернулся в обычное веб-приложение, я мог бы использовать очень простой PHP-скрипт для base64 данных двоичного изображения. – Locohost