CherryPoppins
File download phoenix
I am creating a csv and saving it to the static folder like this:
def get_file_path() do
file_path = "#{:code.priv_dir(:my_app)}/static/myfolder/#{Ecto.UUID.generate()}.csv"
File.mkdir_p!(Path.dirname(path_to_priv_static <> "/myfolder/"))
{:ok, file_path}
end
def write() do
{:ok, file_path} = get_file_path()
file = File.open!(file_path, [:write, :utf8])
...write csv...
File.close(file)
end
This works fine and Phoenix is setup to serve static files out of my_folder folder. The issue is that after a .csv is create if I paste https://.../my_folder/<generated_ecto_uuid>.csv into the address bar it downloads the file. If i paste it in the address bar again and hit enter it takes me to a page “Not Found” and nothing is downloaded. If i refresh the tab and then paste the address in the address bar again it downloads fine, paste in the address bar agin and hit enter back to “Not Found” page. rinse repeat.
So the CSVs are being saved in the priv>static>... directory. There is also an assets>static directory that does not seem to display the same behavior as above when I try to download a file from it using the url, it works everytime i paste and hit enter. Also weird, this problem only happens on prod. Locally I can paste the csv link in the address bar and download as many times as I want without having to refresh the tab in between. Anyone have any ideas whats up or a better way to save the csv to avoid issues this directory might be having?
Marked As Solved
al2o3cr
How are you hosting the application? I’ve seen similar behavior on PaaS hosting like Heroku, where each dyno has a separate local filesystem; if the upload and the download don’t hit the same one the file won’t be found.
Also Liked
APB9785
derek-zhou
The correct folder to store run time generated, user downloadable files shall be priv/static/... not assets/static/... the latter is a source dir for assets. There must be something else wrong in your code; check your console for messages.
03juan
Just to be clear, is this just a typo when you wrote out the post? Because there’s a difference in your path names my_folder and myfolder
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









