Как я могу отправить файл в запросе POST?

Если Вы хотите сотрудничество, то основанный на языке подход (ЛАТЕКС был бы моим предпочтением, хотя основанные на XML также хороши - DocBook, являющийся флагманом здесь) действительно имеет смысл, особенно при отслеживании файлов с системой управления версиями.

Что-либо, что действительно усложняет вещи как любое программное обеспечение с двоичным или собственным форматом, не поможет Вам здесь.

Жаль, если это не ответ, Вы хотите.

5
задан konr 2 October 2009 в 11:45
поделиться

2 ответа

Попробуйте использовать clojure-apache-http , оболочку Clojure для полнофункциональных HTTP-библиотек Apache. Он поддерживает POST multipart / form-data.

4
ответ дан 14 December 2019 в 08:55
поделиться

I'm not sure it's possible using clojure-http-client. As far as I see in the source code, if you pass a map as the body argument, it will URL encode every element and send it. It appears that you can only POST files as entire bodies, without any other arguments. So nu support for multipart.

(let [out (.getOutputStream connection)]
(cond
  (string? body) (spit out body)
  (map? body) (spit out (url-encode body))
  (instance? InputStream body)
  (let [bytes (make-array Byte/TYPE 1000)]
    (loop [#^InputStream stream body
           bytes-read (.read stream bytes)]
      (when (pos? bytes-read)
        (.write out bytes 0 bytes-read)
        (recur stream (.read stream bytes))))))
(.close out)))
3
ответ дан 14 December 2019 в 08:55
поделиться