Created
December 6, 2016 03:25
-
-
Save drpventura/2ce1d13185841c0e93216f7a9c93d877 to your computer and use it in GitHub Desktop.
Example for figuring out how file upload works.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns file-upload.handler | |
(:require [compojure.core :refer :all] | |
[compojure.route :as route] | |
[ring.middleware.defaults :refer [wrap-defaults site-defaults]] | |
[ring.middleware.params :refer [wrap-params]] | |
[ring.middleware.multipart-params :refer [wrap-multipart-params]] | |
[ring.middleware.reload :refer [wrap-reload]] | |
[ring.adapter.jetty :refer [run-jetty]] | |
[hiccup.core :refer [html]])) | |
(defn home-page [] | |
(html [:form {:action "/file" :method "post" :enctype "multipart/form-data"} | |
[:input {:name "file" :type "file" :size "20"}] | |
[:input {:type "submit" :name "submit" :value "submit"}]])) | |
(defn upload-file [file] | |
(let [file-name (file :filename) | |
size (file :size)] | |
(do | |
(prn file) | |
{:status 200 | |
:headers {"Content-Type" "text/html"} | |
:body (html [:h1 (str file)] | |
[:h1 size])}))) | |
(defroutes | |
app-routes | |
(GET "/" [] (home-page)) | |
(POST "/file" {params :params} | |
(let [file (get params "file")] | |
(upload-file file))) | |
(route/not-found "Not Found")) | |
(def app | |
(-> app-routes | |
wrap-params | |
wrap-multipart-params | |
wrap-reload)) | |
(defonce server (run-jetty #'app {:port 8080 :join? false})) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment