commit: ab78cfbd07b48c08b44bb3e95a2752e45bf96848
parent: f20bfc9ea5059735c02f8a7260733bc7efbc90bd
Author: rinpatch <rinpatch@sdf.org>
Date: Tue, 15 Jan 2019 07:01:50 +0000
Merge branch 'bugfix/upload_with_question_mark' into 'develop'
Upload: Fix uploading with a ? in the filename
See merge request pleroma/pleroma!669
Diffstat:
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git 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
@@ -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