Я хочу загрузить изображение, показать предварительный просмотр изображения и связанное с ним имя файла - все в Clojure.
Пример на http://jsfiddle.net/LvsYc/638/ демонстрирует, что я хочу сделать, за исключением того, что я хочу это в Clojure / ClojureScript.
Я попытался переписать код по вышеуказанной ссылке, иудалось вывести имя файла на консоль с помощью (js / console.log).В моем файле два глобальных атома, один для имени изображения, а другой для самого изображения.Мой код ниже - моя попытка.
Что мне нужно сделать, чтобы 1).получить имя файла из журнала консоли и отобразить его в: span.file-name, используя эти атомы, и 2) отобразить предварительный просмотр изображения?
(def image (atom "#"))
(def image-name (atom nil))
(def file-upload-selector
"Implements a file-upload button, allowing the user to
navigate to a file on their desktop and select it."
(let
[reader (js/FileReader.)
_ (set! (.-onload reader)
(fn [e]
(reset! image
(-> e .-target .-result ))))
read-url
(fn [input]
(reset! image-name (-> input .-target .-files (aget 0) .-name))
(js/console.log (-> input .-target .-files (aget 0) .-name))
(when-let [file-input (.-files input)]
(.readAsDataURL reader (aget file-input 0))))]
(fn []
[:div.file.has-name.is-boxed
[:label.file-label
[:input.file-input {:type "file"
:name "User_Photo"
:id "file"
:on-change read-url}]
[:span.file-cta
[:span.file-icon
[:i.fas.fa-upload]]
[:span.file-label "Upload profile picture" ]
][:img {:src image :alt "your image" }]
[:span.file-name {:id "filename" } image-name
]]])))