Add missing file extension if file does not have one
This commit is contained in:
parent
678df59d22
commit
0a95b5594b
@ -86,9 +86,14 @@ defmodule Pleroma.Upload do
|
|||||||
end
|
end
|
||||||
|
|
||||||
defp create_name(uuid, ext, type) do
|
defp create_name(uuid, ext, type) do
|
||||||
if type == "application/octet-stream" do
|
case type do
|
||||||
|
"application/octet-stream" ->
|
||||||
String.downcase(Enum.join([uuid, ext], "."))
|
String.downcase(Enum.join([uuid, ext], "."))
|
||||||
else
|
|
||||||
|
"audio/mpeg" ->
|
||||||
|
String.downcase(Enum.join([uuid, "mp3"], "."))
|
||||||
|
|
||||||
|
_ ->
|
||||||
String.downcase(Enum.join([uuid, List.last(String.split(type, "/"))], "."))
|
String.downcase(Enum.join([uuid, List.last(String.split(type, "/"))], "."))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -104,10 +109,24 @@ defmodule Pleroma.Upload do
|
|||||||
defp get_name(file, uuid, type, should_dedupe) do
|
defp get_name(file, uuid, type, should_dedupe) do
|
||||||
if should_dedupe do
|
if should_dedupe do
|
||||||
create_name(uuid, List.last(String.split(file.filename, ".")), type)
|
create_name(uuid, List.last(String.split(file.filename, ".")), type)
|
||||||
|
else
|
||||||
|
unless String.contains?(file.filename, ".") do
|
||||||
|
case type do
|
||||||
|
"image/png" -> file.filename <> ".png"
|
||||||
|
"image/jpeg" -> file.filename <> ".jpg"
|
||||||
|
"image/gif" -> file.filename <> ".gif"
|
||||||
|
"video/webm" -> file.filename <> ".webm"
|
||||||
|
"video/mp4" -> file.filename <> ".mp4"
|
||||||
|
"audio/mpeg" -> file.filename <> ".mp3"
|
||||||
|
"audio/ogg" -> file.filename <> ".ogg"
|
||||||
|
"audio/wav" -> file.filename <> ".wav"
|
||||||
|
_ -> file.filename
|
||||||
|
end
|
||||||
else
|
else
|
||||||
file.filename
|
file.filename
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
defp get_upload_path(uuid, should_dedupe) do
|
defp get_upload_path(uuid, should_dedupe) do
|
||||||
if should_dedupe do
|
if should_dedupe do
|
||||||
|
@ -43,5 +43,18 @@ defmodule Pleroma.UploadTest do
|
|||||||
data = Upload.store(file, true)
|
data = Upload.store(file, true)
|
||||||
assert hd(data["url"])["mediaType"] == "image/jpeg"
|
assert hd(data["url"])["mediaType"] == "image/jpeg"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "adds missing extension" do
|
||||||
|
File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")
|
||||||
|
|
||||||
|
file = %Plug.Upload{
|
||||||
|
content_type: "image/jpg",
|
||||||
|
path: Path.absname("test/fixtures/image_tmp.jpg"),
|
||||||
|
filename: "an [image"
|
||||||
|
}
|
||||||
|
|
||||||
|
data = Upload.store(file, false)
|
||||||
|
assert data["name"] == "an [image.jpg"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user