forked from AkkomaGang/akkoma
Merge branch 'fix/mediaproxy-capture-content-disposition-filename' into 'develop'
MediaProxy: parse filename from content-disposition for non-whitelisted types See merge request pleroma/pleroma!936
This commit is contained in:
commit
4b3c86c1a6
1 changed files with 19 additions and 1 deletions
|
@ -311,7 +311,25 @@ defp build_resp_content_disposition_header(headers, opts) do
|
||||||
end
|
end
|
||||||
|
|
||||||
if attachment? do
|
if attachment? do
|
||||||
disposition = "attachment; filename=" <> Keyword.get(opts, :attachment_name, "attachment")
|
name =
|
||||||
|
try do
|
||||||
|
{{"content-disposition", content_disposition_string}, _} =
|
||||||
|
List.keytake(headers, "content-disposition", 0)
|
||||||
|
|
||||||
|
[name | _] =
|
||||||
|
Regex.run(
|
||||||
|
~r/filename="((?:[^"\\]|\\.)*)"/u,
|
||||||
|
content_disposition_string || "",
|
||||||
|
capture: :all_but_first
|
||||||
|
)
|
||||||
|
|
||||||
|
name
|
||||||
|
rescue
|
||||||
|
MatchError -> Keyword.get(opts, :attachment_name, "attachment")
|
||||||
|
end
|
||||||
|
|
||||||
|
disposition = "attachment; filename=\"#{name}\""
|
||||||
|
|
||||||
List.keystore(headers, "content-disposition", 0, {"content-disposition", disposition})
|
List.keystore(headers, "content-disposition", 0, {"content-disposition", disposition})
|
||||||
else
|
else
|
||||||
headers
|
headers
|
||||||
|
|
Loading…
Reference in a new issue