2 Stimmen

Ist es möglich, PLUpload in Kombination mit CouchDB zu verwenden?

Ich bin auf der Suche nach einer Möglichkeit, Bilder in meine CouchDB hochzuladen und sie vor dem Upload zu verkleinern, solange sie noch beim Client sind. PLUpload bietet eine Möglichkeit dafür, aber ich frage mich, ob es möglich ist, es zusammen mit CouchDB zu verwenden.

2voto

Kuepper Punkte 952

Nach viel Versuch und Lesen ist es mir endlich gelungen, ein Bild mit PLUpload in CouchDB hochzuladen. Das Hauptproblem war, dass es eine undokumentierte Eigenschaft "file_data_name" gibt, die manuell auf die Anforderungen von CouchDB eingestellt werden muss. Der Standardwert ist "name", aber CouchDB erwartet "_attachments". Ich habe diese Eigenschaft nur gefunden, indem ich den Quellcode für die Flash-Laufzeit inspiziert habe.

Unten ist der JavaScript-Code aufgeführt, den ich für die Initialisierung des PLUpload verwendet habe:

$("form#pluploadForm #uploader").plupload({
  // Allgemeine Einstellungen
  runtimes : 'flash,silverlight,html5',
  url : 'http://dein.pfad.zu.couchdb.com/datenbank/[dokumentid]',
  max_file_size : '10mb',
  unique_names : true,
  file_data_name : "_attachments",

  // Bilder auf der Clientseite verkleinern, wenn möglich
  resize : {width : 320, height : 240, quality : 90},

  // Angeben, welche Dateien durchsucht werden sollen
  filters : [
    {title : "Bilddateien", extensions : "jpg,gif,png"},
    {title : "Zip-Dateien", extensions : "zip"}
  ],

  // Einstellungen für Flash
  flash_swf_url : 'js/plupload.flash.swf',

  // Einstellungen für Silverlight
  silverlight_xap_url : 'js/plupload.silverlight.xap',

  multipart : true,
  multipart_params : {
    description: "über PLUpload hochgeladen",
   _rev: "[die aktuelle Revision Ihres Dokuments]",
  }
});

Aber mit diesem Ansatz ist es nur möglich, ein Bild zu einem einzelnen Dokument hochzuladen. Das Hochladen in mehrere Dokumente funktioniert nicht, aber ich habe es noch nicht wirklich ausprobiert.

1voto

Chapterhouse Punkte 11

Was du tun möchtest, ist das BeforeUpload-Ereignis von PLUploader überschreiben, um mit deiner Couch-Instanz zu arbeiten, bevor die Datei hochgeladen wird. In der folgenden Methode erstelle ich ein neues Dokument (unter Verwendung von jquery.couch.js), hole die Antwort und verwende die neuen _id und _rev des neuen Dokuments, um die Optionen der PLUploader-Instanz festzulegen.

uploader.bind('BeforeUpload', function(up, file) {
  $db.saveDoc({
    users : ['all']
  }, {
    success : function(response) {
      if(response.ok) {
        up.settings.url = 'http://127.0.0.1:5984/filesystem/' + response.id;
        up.settings.multipart_params._rev = response.rev;
        up.trigger("UploadFile", file);
      }
    }
  });
  return false;
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X