如何使用ibrowse将附件上传到CouchDB中的文档?

时间:2011-11-17 13:03:16

标签: erlang couchdb

我使用curl上传图片文件Penguins.jpg。例如: C:\curl>curl -vX PUT -H "Content-Type: image/jpeg" http://localhost:5984/DBNAME/DOCID/Penguins?rev=LATEST_REVISION --data-binary @Penguins.jpg

它有效......

那么,我如何使用ibrowse实现同样的目标呢? ===============================

1 个答案:

答案 0 :(得分:3)

当然,文件上传是HTTP POST 。现在让我们先编写一段HTTP/1.1 POST with Ibrowse 的Erlang代码。

%% 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.

从那里,让我们做Couch DB的事情。

-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.

你去吧!您需要做的就是自定义您的宏Link以适合您的沙发数据库设置,您就可以开始了!