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!