2011-12-16 4 views
4

Je convertis ma base de données sqlite en Couchdb. Je peux convertir le db et télécharger sur le serveur Couchdb. Tout sauf les images. Je veux télécharger les images en tant que pièces jointes autonomes et je voudrais le faire en masse en utilisant javascript, REST et xhr.Comment télécharger en vrac des pièces jointes Couchdb?

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

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

J'ai CURLed un seul fichier à tester et cela fonctionne. Comment puis-je faire du vrac?

Ceci est et l'application iOS développé avec Appcelerator Titanium.

Répondre

1

Vous devriez être en mesure d'ajuster votre seul fichier, et faire quelque chose comme ce qui suit:

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

avec l'être données:

{ 
    "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] }}, 
    ] 
} 

Cependant, en fonction du nombre et la taille des pièces jointes vous pourriez rencontrer des problèmes. Il pourrait être préférable de simplement boucler et de les faire un à la fois; ou au moins dans des lots de taille raisonnable.

0

Un simple travail autour .. Exporter toutes les données pour exceller en premier. Ensuite, créez une colonne qui aura les URL exactes nécessaires pour exécuter les instructions curl pour chaque document (dans l'excel il y aura des lignes pour chaque document). déclaration de boucle simple pour exécuter l'image télécharger:

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

Après avoir construit les urls individuels nécessaires à la boucle, ce qui sera assez facile dans Excel, copier toute la colonne de construction en urls dans un fichier texte et placer le texte fichier où les images à télécharger sont présents. Ensuite, créez un script bash qui va lire toutes les lignes et continuer à afficher les images sur le serveur CouchDB: script bash

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

Dans mon cas, toutes les lignes d'URL sont présentes dans le fichier test.txt.

Cette méthode a fonctionné pour moi parfaitement la taille des images étaient autour de 60-65kb si avec 380 docs. Je ne sais pas ce qui va se passer avec les gros fichiers.

Questions connexes