27 lines
664 B
Elixir
27 lines
664 B
Elixir
defmodule Postland.Uploads do
|
|
use Phoenix.VerifiedRoutes,
|
|
endpoint: PostlandWeb.Endpoint,
|
|
router: PostlandWeb.Router,
|
|
statics: ["uploads"]
|
|
|
|
def upload_path() do
|
|
Application.get_env(:postland, :upload_path)
|
|
end
|
|
|
|
def handle_upload(%{client_type: mime_type, uuid: uuid}, %{path: path} = meta) do
|
|
extension = extension_from_mime(mime_type)
|
|
dest = Path.join(upload_path(), "#{uuid}#{extension}")
|
|
File.cp!(path, dest)
|
|
{:ok, ~p"/uploads/#{Path.basename(dest)}"}
|
|
end
|
|
|
|
def extension_from_mime(mime_type) do
|
|
case MIME.extensions(mime_type) do
|
|
[] ->
|
|
""
|
|
|
|
[ext | _rest] ->
|
|
".#{ext}"
|
|
end
|
|
end
|
|
end
|