2011-11-17 34 views
5

Tôi đã sử dụng curl để tải lên tệp hình ảnh Penguins.jpg. Ví dụ: C:\curl>curl -vX PUT -H "Content-Type: image/jpeg" http://localhost:5984/DBNAME/DOCID/Penguins?rev=LATEST_REVISION --data-binary @Penguins.jpgLàm cách nào để tải lên tệp đính kèm vào tài liệu trong CouchDB bằng cách sử dụng ibrowse?

và nó làm việc ...

Vì vậy, làm thế nào tôi có thể đạt được cùng sử dụng ibrowse? ===============================

Trả lời

3

Đương nhiên, tải tệp lên là HTTP POST. Bây giờ cho phép đầu tiên viết đoạn mã Erlang mà không HTTP/1.1 POST with Ibrowse.

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

Từ đó, hãy làm điều Couch DB của chúng tôi.

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

Có bạn đi! Tất cả những gì bạn cần làm là tùy chỉnh Macro Link để phù hợp với cài đặt DB của chiếc ghế và bạn đã sẵn sàng!

+1

Nếu tệp lớn, nó có thể cần phải được gửi theo khối trong trường hợp tiêu đề sẽ bao gồm một cái gì đó tương tự như sau: '{" Content-Type "," multipart/form-data "}' –

Các vấn đề liên quan