Tôi đang xây dựng API clojure cho trang web của mình về cơ bản là trình bao bọc xung quanh API web gốc. Một trong những tính năng mà tôi không thể thực hiện là gửi tệp qua các yêu cầu POST, về cơ bản những gì tôi sẽ làm trong trình bao với curl -F foo=bar [email protected] foobar.com
.Tôi làm cách nào để gửi tệp trong yêu cầu POST?
Tôi đang sử dụng clojure-http-client và ban đầu đã thử biểu mẫu (resourcefully/post "foobar.com" {} {:foo "bar" :baz (File. "bak.jpg")})
, nhưng trường: baz bị bỏ qua bởi tập lệnh nhận, như thể tôi đã gửi chỉ: foo. Sau đó, tôi đã thử thay đổi File.
thành FileInputStream
, vì [dòng 51] [2] của client.clj dường như đang kiểm tra cho lớp cụ thể này, nhưng vẫn có kết quả tương tự.
Sau đó, tôi đã tạo một trang php chỉ đơn giản in $ _POST để kiểm tra yêu cầu của tôi, và rõ ràng dữ liệu của đối tượng đang được gửi theo nghĩa đen. Hãy xem:
Clojure => (resourcefully/bài "http://ptchan.org/pttest.php" {} {: foo "bar": baz "/tmp/bak.jpg"}) { : body-seq ("mảng" "(" "[foo] => bar" "[baz] => /tmp/bak.jpg" ")"),: mã 200,: msg "OK",: phương thức "POST",: tiêu đề {: date ("Fri, 02 Oct 2009 11:41:15 GMT"),: thay đổi ("Accept-Encoding"),: content-length ("53"),: connection ("close"),: content-type (" text/html "),: máy chủ (" Apache/2.2.9 (Debian) PHP/5.2.6-1 + lenny3 với Suhosin-Patch "),: x-powered-by (" PHP/5.2.6-1 + lenny3 ")},: get-header #,: cookies nil,: url" http://ptchan.org/pttest.php "}
Clojure => (resourcefully/post" http://ptchan.org/pttest.php "{} {: foo" bar ": baz (Tệp."/tmp/bak.jpg ")}) {: body-seq ("Array" "(" "[foo] => bar" "[baz] => /tmp/bak.jpg" ")"),: mã 200,: msg "OK",: phương thức "POST",: tiêu đề {: date ("Fri, 02 Oct 2009 11:41:30 GMT"),: thay đổi ("Accept-Encoding"),: content-length ("53"),: connection (" close "),: content-type (" text/html "),: server (" Apache/2.2.9 (Debian) PHP/5.2.6-1 + lenny3 với Suhosin-Patch "),: x-powered-by ("PHP/5.2.6-1 + lenny3")},: get-header #,: cookies nil,: url "http://ptchan.org/pttest.php"}
Clojure => (resourcefully/post "http://ptchan.org/pttest.php" {} {: foo "bar": baz (FileInputStream. "/tmp/bak.jpg")}) {: body-seq ("Array" "(" "[foo] => bar" "[baz] => [email protected]" ")") ,: mã 200,: msg "OK",: phương thức "POST",: tiêu đề {: date ("Fri, 02 Oct 2009 11:41:47 GMT"),: thay đổi ("Accept-Encoding"),: content -length ("73"),: connection ("close"),: content-type ("text/html"),: server ("Apache/2.2.9 (Debian) PHP/5.2.6-1 + lenny3 với Suhosin-patch "),: x-powered-by (" PHP/5.2.6-1 + lenny3 ")},: get-tiêu đề #,: cookie nil,: url" http://ptchan.org/pttest.php "}
tôi 'không thực sự chắc chắn làm thế nào để tiến hành. Bất kì lời đề nghị nào? Mẹo chung về gỡ lỗi cũng được hoan nghênh!
Cảm ơn
+1 để sử dụng lisp. ^^ – KB22