Библиотека Elixir ExAws Модуль S3 имеет метод put_object
, который позволяет выполнять загрузку файла.ExAws S3 - Получить URL-адрес загруженного файла
%{path: filepath, filename: filename} = %Plug.Upload{...}
{:ok, contents} = File.read(filepath)
time = DateTime.utc_now() |> DateTime.to_unix
path = "#{Mix.env}/#{time}/#{filename}"
@bucket |> ExAws.S3.put_object(path, contents) |> ExAws.request
=> {:ok, %{body: "", headers: [{"x-amz-id-2", "someid="}, {"x-amz-request-id", "someid"}, {"Date", "Thu, 16 Feb 2017 19:43:01 GMT"}, {"ETag", "\"sometag\""}, {"Content-Length", "0"}, {"Server", "AmazonS3"}], status_code: 200}}
Однако мне не удалось выяснить URL-адрес моего загруженного файла. Используя эту библиотеку, как я могу получить URL моего загруженного файла?
Я уверен, что 'ex_aws' не предоставляет эту опцию. Я использовал его с комбинацией с 'arc', и arc в основном генерирует URL-адреса самостоятельно, но иногда они недействительны. Лучшее решение - проверить вручную, какие URL-адреса ваших файлов и на основе этого создадут вашу собственную функцию 'get_url'. Я оказался очень задуман дугой, и я всерьез задумываюсь о создании собственной библиотеки загрузки/скачивания S3. – PatNowak