pjholmes
I saw that PR had been applied to enable LiveView File Upload, so I thought I would try it out. I’m relatively new to Elixir, Phoenix, LiveView, so what could possibly go wrong?
The guide makes it clear where to add the call to allow_update/3 for a LiveView, but I would like to add it to a form_component that opens in a modal window. I added a mount/1 function to the component below.
defmodule LiveUploadWeb.PostLive.FormComponent do
use LiveUploadWeb, :live_component
alias LiveUpload.Blog
@impl true
def mount(socket) do
IO.puts("in mount")
newSocket =
socket
|> assign(:uploaded_files, [])
|> allow_upload(:avatar, accept: ~w(.jpg .jpeg .png), max_entries: 1)
IO.inspect(newSocket, label: "newSocket")
{:ok, newSocket}
end
...
The mount/1 function is called, and the uploaded_files and uploads assigns are added to the session.
in mount
Socket: #Phoenix.LiveView.Socket<
assigns: %{
flash: %{},
myself: %Phoenix.LiveComponent.CID{cid: 2},
uploaded_files: [],
uploads: %{
__phoenix_refs_to_names__: %{"phx-FkYRxX4PVOACIAIJ" => :avatar},
avatar: #Phoenix.LiveView.UploadConfig<accept: ".jpg,.jpeg,.png", ...>
}
},
However, when I run the server, go to /posts, click ‘New Post’, click “Choose File” and select a file, I get an error message on the sever 'no uploads have been allowed’.
Can someone please explain how to allow uploads in a stateful component?
The repo is here. I explained each of the steps I followed in the README.md file. The README.md also includes the detailed error message.
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 6- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
andreaseriksson
Its not yet supported
hudsonbay
You saved me a lot of time with this




ndan
It’s possible to upload files in components. You should call
allow_upload/3insideupdatefunction instead ofmount.Please note that you have to use
<form>inside your component, which makes it impossible to use inside another<form>(HTML doesn’t allow nested forms)YamilClassic
It doesn’t work for me. I’m getting:
outlog
try GitHub - mcrumm/live_upload_example: Demonstrating file uploads with Phoenix LiveView · GitHub that’s the example I’ve used..
c4710n
To clarify, Live Upload is supported in
LiveViewandLiveComponentin 2022. It has well support on server-side uploading and client-side direct uploading.If you encounter any problems, check:
allow_upload/3phx-targetattribute of form element if you are using LiveComponentThe example provided by @outlog is recommended.