Letzte Woche habe ich ja schon etwas über CouchDB berichtet und wie unkompliziert man damit arbeiten kann. In den Dokumenten können aber nicht nur beliebige Daten in beliebiger Struktur gespeichert werden, es ist auch sehr einfach Dateianhänge zu speichern. Dieser Code-Schnipsel ist ein einfaches Beispiel, wie es mit dem Zend_Http_Client funktioniert. Wichtig ist nur, dass immer die _rev(Id) des jeweiligen Dokumentes mit übergeben wird, da sonst nichts gespeichert wird und ein Konflikt auftritt.
$image = 'bild.jpg'; $mimeType = mime_content_type($image); $content = file_get_contents($image); $url = 'http://developer:5984/database/document/path?rev=xx-xxxxx'; $client = new Zend_Http_Client(); $response = $client->setUri($url) ->setMethod('PUT') ->setHeaders(array('Content-Type' => $mimeType)) ->setRawData($content, $mimeType) ->request()
Die Anhänge könnten auch mit dem Dokument im JSON-Format übertragen werden. Dafür müsste $content dann aber erst base64_encoded werden. Hierbei werden bestehende Anhänge aber gelöscht!