Как я могу массово загрузить вложения Couchdb? - PullRequest
4 голосов
/ 17 декабря 2011

Я конвертирую свою базу данных sqlite в Couchdb. Я могу конвертировать БД и загрузить на сервер Couchdb. Все, кроме изображений. Я хочу загрузить изображения в виде автономных вложений, и я хотел бы сделать это массово, используя javascript, REST и xhr.

POST http://127.0.0.1:5984/database/_bulk_docs

Data : {"_id": "701", "_attachments": {"555_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile]      }}}

Я выбрал один файл для проверки, и это работает. Как мне сделать объем?

Это приложение для iOS, разработанное с помощью Appcelerator Titanium.

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Вы должны иметь возможность настроить отдельный файл и сделать что-то вроде следующего:

POST http://127.0.0.1:5984/database/_bulk_docs

с данными:

{
  "docs": [
    {"_id": "701", "_attachments": {"555_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile] }},
    {"_id": "702", "_attachments": {"556_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile] }},
    {"_id": "703", "_attachments": {"557_image.png": { "content_type": "image/jpg","data":[object TiFilesystemFile] }},
  ]
}

Однако, в зависимости от количества иРазмер вложений вы можете столкнуться с проблемами.Может быть, лучше просто зациклить и сделать их по одному;или, по крайней мере, партиями разумного размера.

0 голосов
/ 01 апреля 2017

Простое решение. Экспортируйте все данные, чтобы превзойти в первую очередь. Затем создайте столбец, который будет иметь точные URL-адреса, необходимые для выполнения операторов curl для каждого документа (в Excel будут строки для каждого документа). Простой оператор curl для загрузки изображения:

curl -v -X PUT "http://username:password@serverip:portno/dbname/doc_id/image.JPG?rev=revisionid" --data-binary @image.JPG -H "Content-Type:image/jpg"

После создания отдельных URL-адресов, необходимых для скручивания, что будет довольно просто в Excel, скопируйте весь столбец собранных URL-адресов в текстовый файл и поместите текстовый файл, где присутствуют загружаемые изображения. Затем создайте скрипт bash, который будет читать все строки и продолжать отправлять изображения на сервер couchdb: скрипт bash

#!/bin/bash
while read line
do
        curl -v -X PUT $line
done < test.txt

В моем случае все строки url присутствуют в файле test.txt.

Этот метод сработал для меня безупречно, размер изображений составлял около 60-65 Кб, хотя при 380 документах. Не уверен, что будет с большими файлами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...