diff options
author | rinpatch <rinpatch@sdf.org> | 2019-01-15 07:01:50 +0000 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2019-01-15 07:01:50 +0000 |
commit | ab78cfbd07b48c08b44bb3e95a2752e45bf96848 (patch) | |
tree | 44e259bad4646eeca47f7bbcb473adb3faea1a91 | |
parent | f20bfc9ea5059735c02f8a7260733bc7efbc90bd (diff) | |
parent | 9fcdca1bdca04bdb52b7ac9a0d69e0886b12cb87 (diff) | |
download | pleroma-ab78cfbd07b48c08b44bb3e95a2752e45bf96848.tar.gz |
Merge branch 'bugfix/upload_with_question_mark' into 'develop'
Upload: Fix uploading with a ? in the filename
See merge request pleroma/pleroma!669
-rw-r--r-- | lib/pleroma/upload.ex | 8 | ||||
-rw-r--r-- | test/upload_test.exs | 15 |
2 files changed, 22 insertions, 1 deletions
diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index 185ba25fa..b19920dff 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -215,7 +215,13 @@ defmodule Pleroma.Upload do end 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() end diff --git a/test/upload_test.exs b/test/upload_test.exs index bda503361..b2d9eca38 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -152,5 +152,20 @@ defmodule Pleroma.UploadTest do assert Path.basename(attachment_url["href"]) == "an%E2%80%A6%20image.jpg" 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 |