silverdr

silverdr

Downloading with :httpc request questions

Apparently in Elixir the most direct (in the “dependencies-free” sense) way of downloading remote file is to use

https://www.erlang.org/doc/man/httpc.html#request-5

At least I haven’t found anything else so far. That seems OK as the task at hand is nothing complex. Just GET a remote file over http(s) and save it to a local one:

:httpc.request(:get, {'https://my.file.server.net/filename', []}, [timeout: 5000], [stream: 'local_file'])

seems to do the job, but:

  • file is “binary” (in the general, not Elixir meaning) yet I see no difference between body_format: :binary and the default (string). Is there any?

  • more importantly I can’t fathom how to make the downloaded file overwrite existing one at the local destination path. New file gets appended to the existing one instead of overwriting it. Is there any Erlang voodoo I am missing here or do I have to handle this myself?

  • and the most important question is: is there a way to limit the response size. I mean it’s great that I can limit the time of the request (timeout) so that this doesn’t hang there forever but what if for some reason I get the output of /dev/zero for example instead of what I am expecting. IOW I don’t would like to store files only up to certain length (byte count). Any clues?

First Post!

silverdr

silverdr

There’s also:

which seems to be doing almost all that’d be needed in my case but it’s a few more dependencies pulled for something that feels like it should be much simpler

Where Next?

Popular in Questions Top

Fl4m3Ph03n1x
Background Let’s assume I have a typical GenServer that receives messages as requests, does some operation in a DB and returns responses....
New
JDanielMartinez
Hi! May someone helps me, please! I have two apps into an umbrella project: the first one is Database, which manages queries, and the se...
New
pgiesin
This should be a simple problem but I just can’t seem to figure it out. I have a standalone Elixir app that won’t find the database. Dep...
New
New
quazar
How to set Jason to encode all fields in ecto schema, I don’t care about security and implementing only is taking long list of attributes...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
Codball
Mix format works fine if run from the cmd. I’ve followed this to facilitate the implementation into VSC which involves downloading an ext...
New

Other popular topics Top

belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
977 41022 311
New
yurko
Here are few pieces of (common) Linux knowledge that we use for reasonably small one server apps. We use Ubuntu but this should work for ...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 49522 488
New
dokuzbir
Hello, I am trying to convert my lists to string without losing brackets.For start i have 3 map. They look like these buyer = %{ id: ...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

We're in Beta

About us Mission Statement