我正在为我的网站构建一个clojure API,它基本上是原始Web API的包装器.我无法实现的功能之一是通过POST请求发送文件,基本上我将在shell中执行curl -F foo=bar baz=@bak.jpg foobar.com
.
我正在使用clojure-http-client,并且最初尝试过该表单(resourcefully/post "foobar.com" {} {:foo "bar" :baz (File. "bak.jpg")})
,但接收脚本忽略了:baz字段,就像我只发送了一样:foo.后来,我尝试File.
改为FileInputStream
,因为client.clj的[第51行] [2]似乎正在检查这个特定的类,但仍然得到相同的结果.
然后我创建了一个简单的打印$ _POST的php页面来检查我的请求,显然这些对象的数据是按字面意思发送的.看一看:
Clojure =>(资源/帖子" http://ptchan.org/pttest.php "{} {:foo"bar":baz"/tmp/bak.jpg"}){:body-seq("Array"" (""[foo] => bar""[baz] => /tmp/bak.jpg"")"),: code 200,:msg"OK",:方法"POST",:headers {:date( "周五,2009年10月2日11:41:15 GMT"),:vary("Accept-Encoding"),:content-length("53"),: connection("close"),:content-type("text/html"),: server("Apache/2.2.9(Debian)PHP/5.2.6-1 + lenny3与Suhosin-Patch"),:x-powered-by("PHP/5.2.6-1 + lenny3 ")} ,: get-header#,: cookies nil,:url" http://ptchan.org/pttest.php "}
Clojure =>(资源/后" http://ptchan.org/pttest.php "{} {:foo"bar":baz(文件."/ tmp/bak.jpg")}){:body-seq( "Array""("[[foo] => bar""[baz] => /tmp/bak.jpg""))),: code 200,:msg"OK",:方法"POST",:header {:date("星期五,2009年10月2日11:41:30 GMT"),:vary("Accept-Encoding"),:content-length("53"),: connection("close"),: content- type("text/html"),: server("Apache/2.2.9(Debian)PHP/5.2.6-1 + lenny3 with Suhosin-Patch"),: x-powered-by("PHP/5.2.6 -1 + lenny3")} ,: get-header#,: cookies nil,:url" http://ptchan.org/pttest.php "}
Clojure =>(资源/帖子" http://ptchan.org/pttest.php "{} {:foo"bar":baz(FileInputStream."/ tmp/bak.jpg")}){:body-seq( "Array""("[[foo] => bar""[baz] => java.io.FileInputStream@320f6398"")"),: code 200,:msg"OK",:方法"POST",: headers {:date("星期五,2009年10月2日11:41:47 GMT"),:vary("Accept-Encoding"),:content-length("73"),: connection("close"),: content -type("text/html"),: server("Apache/2.2.9(Debian)PHP/5.2.6-1 + lenny3 with Suhosin-Patch"),:x-powered-by("PHP/5.2. 6-1 + lenny3")} ,: get-header#,: cookies nil,:url" http://ptchan.org/pttest.php "}
我不确定如何继续.有什么建议吗?有关调试的一般提示也欢迎!
谢谢