Merge branch 'bugfix/upload_with_question_mark' into 'develop'

Upload: Fix uploading with a ? in the filename

See merge request pleroma/pleroma!669
This commit is contained in:
rinpatch 2019-01-15 07:01:50 +00:00
commit ab78cfbd07
2 changed files with 22 additions and 1 deletions

View file

@ -215,7 +215,13 @@ defp tempfile_for_image(data) do
end end
defp url_from_spec(base_url, {:file, path}) do defp url_from_spec(base_url, {:file, path}) do
[base_url, "media", URI.encode(path)] path =
path
|> URI.encode()
|> String.replace("?", "%3F")
|> String.replace(":", "%3A")
[base_url, "media", path]
|> Path.join() |> Path.join()
end end

View file

@ -152,5 +152,20 @@ test "escapes invalid characters in url" do
assert Path.basename(attachment_url["href"]) == "an%E2%80%A6%20image.jpg" assert Path.basename(attachment_url["href"]) == "an%E2%80%A6%20image.jpg"
end end
test "replaces : (colon) and ? (question-mark) to %3A and %3F (respectively)" 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: "is:an?image.jpg"
}
{:ok, data} = Upload.store(file)
[attachment_url | _] = data["url"]
assert Path.basename(attachment_url["href"]) == "is%3Aan%3Fimage.jpg"
end
end end
end end