Как загрузить вложение в документ в CouchDB с помощью ibrowse? - PullRequest
5 голосов
/ 17 ноября 2011

Я использовал curl для загрузки файла изображения Penguins.jpg. Например: C:\curl>curl -vX PUT -H "Content-Type: image/jpeg" <a href="http://localhost:5984/DBNAME/DOCID/Penguins?rev=LATEST_REVISION" rel="nofollow">http://localhost:5984/DBNAME/DOCID/Penguins?rev=LATEST_REVISION</a> --data-binary @Penguins.jpg

и это сработало ...

Итак, как я могу добиться того же, используя ibrowse? ===============================

1 Ответ

3 голосов
/ 17 ноября 2011

Естественно, загрузка файла - это HTTP POST . Теперь давайте сначала напишем фрагмент кода Erlang, который делает <a href="https://github.com/cmullaparthi/ibrowse/wiki/ibrowse-API" rel="nofollow"><b>HTTP/1.1 POST with Ibrowse </b></a>.

%% Assumes Ibrowse application is in Code path
ensure_ibrowse()->
    case whereis(ibrowse) of
        undefined -> ibrowse:start();
        _ -> ok
    end.<br>
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.

Оттуда, давайте сделаем нашу вещь Couch DB.

-define(Link,"http://localhost:5984/DBNAME/DOCID/Penguins?rev=LATEST_REVISION").<br>
%% 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.

Вот, пожалуйста! Все, что вам нужно сделать, это настроить ваш Macro Link в соответствии с настройками вашего дивана DB, и вы готовы!

...