私は自分のウェブサイトにclojure APIを構築しています。これは基本的に元のWeb APIのラッパーです。私が実装できない機能の1つは、POST要求によるファイル送信です。基本的にはシェルでcurl -F foo=bar [email protected] foobar.com
を使ってやることです。POSTリクエストでファイルを送信するにはどうすればよいですか?
私は(resourcefully/post "foobar.com" {} {:foo "bar" :baz (File. "bak.jpg")})
という形式を試しましたが、:bazフィールドは受信スクリプトによって無視されました。後で、私はFile.
をFileInputStream
に変更しようとしました.client.cljの[line 51] [2]がこの特定のクラスをチェックしているようですが、それでも同じ結果が得られました。
次に、私のリクエストをチェックするために単純に$ _POSTを出力するPHPページを作成しました。明らかにオブジェクトのデータが文字通り送られています。
のClojure =>(resourcefully/POST "http://ptchan.org/pttest.php" {} {:FOO "バー" バズ "/tmp/bak.jpg"}) {:ボディ配列( "アレイ" を見てください:msg "OK"、:メソッド "POST"、:ヘッダ:{:date( "boo" =>/tmp/bak.jpg " ( "Accept-Encoding")、:content-length( "53")、:connection( "close")、:content-type( "Fri、02 Oct 2009 11:41:15 GMT" PHP/5.2.6-1 + lenny3(Suhosin-Patch)」):x-powered-by( "PHP/5.2.6-1 + "http://ptchan.org/pttest.php"}
Clojure =>(リソースが多い/投稿 "http://ptchan.org/pttest.php" {} {:foo "bar":baz(file/"lenny3")}}:get-header#、:cookies nil、 tmp/bak.jpg ")})コード200、:msg "OK"、:msgstr "": "baz" =>/tmp/bak.jpg "") ") :("Accept-Encoding")、:content-length( "53")、:接続( "締め切り"、 " ( "Apache/2.2.9(Debian)PHP/5.2.6-1 + Suenosパッチ付きlenny3")、:x-powered-by ( "PHP/5.2.6-1 + lenny3")}:get-header#、:クッキーなし、:url "http://ptchan.org/pttest.php"}
Clojure =>(リソースが豊富/投稿 "http://ptchan.org/pttest.php" {} {:foo "bar":baz(FileInputStream。 ":" bar "" [baz] => [email protected] "") "):{:body-seq("配列 ""( "" [foo] =>バー ""/tmp/bak.jpg " 、:コード200、:msg "OK"、メソッド "POST"、:ヘッダー{:date( "Fri、02 Oct 2009 11:41:47 GMT")、:vary( "Accept-Encoding")、:content ( "Apache/2.2.9(Debian)PHP/5.2.6-1 + lenny3 with(" 73 ")、:接続("閉じる ")、コンテンツタイプ(" text/html " Suhosinパッチ "):Xパワー・バイ(" PHP/5.2.6-1 + lenny3 ")}、:取得ヘッダー#:クッキーゼロ、:URL" http://ptchan.org/pttest.php「}
Iどのように進むべきかわからない。なにか提案を?デバッグに関する一般的なヒントも歓迎します!私はそれがClojureの-HTTPクライアントを使用して可能だかわからない
おかげ
+1 for lispを使用しています。 ^^ – KB22