Properly escape reserved URI charachters in upload urls
This commit is contained in:
parent
10248d86a2
commit
4263edc9c9
|
@ -85,6 +85,10 @@ def store(upload, opts \\ []) do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def char_unescaped?(char) do
|
||||||
|
URI.char_unreserved?(char) or char == ?/
|
||||||
|
end
|
||||||
|
|
||||||
defp get_opts(opts) do
|
defp get_opts(opts) do
|
||||||
{size_limit, activity_type} =
|
{size_limit, activity_type} =
|
||||||
case Keyword.get(opts, :type) do
|
case Keyword.get(opts, :type) do
|
||||||
|
@ -218,9 +222,7 @@ defp tempfile_for_image(data) do
|
||||||
defp url_from_spec(base_url, {:file, path}) do
|
defp url_from_spec(base_url, {:file, path}) do
|
||||||
path =
|
path =
|
||||||
path
|
path
|
||||||
|> URI.encode()
|
|> URI.encode(&char_unescaped?/1)
|
||||||
|> String.replace("?", "%3F")
|
|
||||||
|> String.replace(":", "%3A")
|
|
||||||
|
|
||||||
[base_url, "media", path]
|
[base_url, "media", path]
|
||||||
|> Path.join()
|
|> Path.join()
|
||||||
|
|
Loading…
Reference in a new issue