wlminimal
How to display preview image using Plug.Upload
I am trying to let user upload image in the form, then when an user upload an image and submit the form, I do put_session %Plug.Upload{} in session data then forward to new page for preview.
def preview_mms(conn, %{ "upload-image" => upload_image}) do
conn
|> put_session(:upload_image, file)
|> redirect(to: image_preview_path(conn, :index))
end
then in ImagePreviewController.ex
def index(conn, _params) do
%{filename: filename, path: path} = get_session(conn, :upload_image)
temp_file = Path.join(path, filename)
render conn, "index.html", temp_file: temp_file
end
in index.html.eex
<div class="row"> <div class="col12"> <img src="<%= @temp_file %>" alt="Upload Image"> </div> </div>
But got an error
(Phoenix.Router.NoRouteError) no route found for GET /tmp/plug-1528/multipart-1528402326-568658593711254-4/momo.jpg
I read docs in Plug.Upload and it says
“Uploaded files are stored in a temporary directory and removed from that directory after the process that requested the file dies.”
What does it mean? does it mean uploaded file in temp directory deleted after new request? even though I try to put that in session data?
What am I missing? Please help!
Most Liked
LostKobrakai
So move the file to a different location and it’s not going to be removed automatically. But you’re then also responsible to clean up at that new location in case people abandon the upload and such.
I always uploading files to S3 but into a temp. folder, which is set up to delete files after 24h – this way the cleanup is automated for me – and if the user saves the uploaded file I only move the file on S3 to a location without auto cleanup.
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance








