5 Stimmen

Wie lade ich einen Anhang zu einem Dokument in CouchDB mit ibrowse hoch?

Ich habe curl verwendet, um eine Bilddatei hochzuladen Penguins.jpg . Zum Beispiel: C:\curl>curl -vX PUT -H "Content-Type: image/jpeg" [http://localhost:5984/DBNAME/DOCID/Penguins?rev=LATEST_REVISION](http://localhost:5984/DBNAME/DOCID/Penguins?rev=LATEST_REVISION) --data-binary @Penguins.jpg

und es hat funktioniert...

Wie kann ich also dasselbe mit ibrowse erreichen? ===============================

3voto

Muzaaya Joshua Punkte 7626

Natürlich ist das Hochladen einer Datei ein HTTP POST . Schreiben wir zunächst ein Stück Erlang-Code, das folgende Aufgaben erfüllt [**HTTP/1.1 POST with Ibrowse**](https://github.com/cmullaparthi/ibrowse/wiki/ibrowse-API) .

%% Assumes Ibrowse application is in Code path
ensure\_ibrowse()->
    case whereis(ibrowse) of
        undefined -> ibrowse:start();
        \_ -> ok
    end.  
post(Link,Data,Headers)-> 
    ensure\_ibrowse(),
    try ibrowse:send\_req(Link,Headers,post,Data) of 
        { \_, \_, \_,Result} -> 
            io:format("\\n\\tFile Uploaded. Return: ~p~n",\[Result\]);
        EE -> {error,EE}
    catch
        XX:XX2 -> {error,XX,XX2}
    end.

Von dort aus können wir unser Couch-DB-Ding machen.

\-define(Link,"http://localhost:5984/DBNAME/DOCID/Penguins?rev=LATEST\_REVISION").  
%% File\_path must be a valid file !
upload\_file(Full\_file\_path)->
    case file:read\_file(Full\_file\_path) of
        {ok,Binary} ->
            post(?Link,Binary,\[{"Content-Type","image/jpeg"}\]);
        Error -> Error
    end.

Bitte sehr! Alles, was Sie tun müssen, ist, Ihr Makro anzupassen Link auf die Einstellungen Ihrer DB-Couch anpassen und schon kann es losgehen!

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