Ok that were good examples thanks
Final variant
add to project.clj
[clj-http "0.5.6"]
add ref to lib in ns
(ns myapp.app
*(:require [clj-http.client :as client] ))*
function
(defn write-file [url]
(with-open [w (clojure.java.io/output-stream "img.jpg" )] ; output file
(.write w (:body (client/get url {:as :byte-array})))) ; here we get
image as byte-array
))
Which trlanslates to ( i hope i get it right ) :
Open file in stream mode (w) and write to it byte stream (image file ) from
url.
On Monday, October 15, 2012 1:06:19 PM UTC+4, Yakovlev Roman wrote:
>
> Hi
> I am pretty new to java world so as i found there is no simple way to get
> image file from url like : http://example.com/image.jpg.
> What i need just to get file from url and store it to db.
> So we need to use buffer, stream and stuff to get file. I found this code
> but i guess there is a way to get things simplier.
>
> (defn fetch-data [url]
> (let [con (-> url java.net.URL. .openConnection)
> fields (reduce (fn [h v]
> (assoc h (.getKey v) (into [] (.getValue v))))
> {} (.getHeaderFields con))
> size (first (fields "Content-Length"))
> in (java.io.BufferedInputStream. (.getInputStream con))
> out (java.io.BufferedOutputStream.
> (java.io.FileOutputStream. "out.file")) ; *Here is our
> file *
> buffer (make-array Byte/TYPE 1024)]
>
> ; Not sure about that loop it's just prints size to repl if we don't need
> that we can omit that part i guess
>
> (loop [g (.read in buffer)
> r 0]
> (if-not (= g -1)
> (do
> (println r "/" size)
> (.write out buffer 0 g)
> (recur (.read in buffer) (+ r g)))))
>
> (.close in)
> (.close out)
> (.disconnect con)))
>
> (fetch-data "http://google.com")
>
>
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en