Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
e942e1e5
Commit
e942e1e5
authored
Nov 09, 2017
by
eal
Browse files
Correct mimetype on bad uploads.
parent
77e272df
Pipeline
#136
passed with stage
in 1 minute and 56 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/upload.ex
View file @
e942e1e5
...
...
@@ -8,11 +8,19 @@ def store(%Plug.Upload{} = file) do
result_file
=
Path
.
join
(
upload_folder
,
file
.
filename
)
File
.
cp!
(
file
.
path
,
result_file
)
# fix content type on some image uploads
matches
=
Regex
.
named_captures
(
~r/\.(?<ext>(jpg|jpeg|png|gif))$/i
,
file
.
filename
)
content_type
=
if
file
.
content_type
==
"application/octet-stream"
and
matches
do
if
matches
[
"ext"
]
==
"jpg"
,
do
:
"image/jpeg"
,
else
:
"image/
#{
matches
[
"ext"
]
}
"
else
file
.
content_type
end
%{
"type"
=>
"Image"
,
"url"
=>
[%{
"type"
=>
"Link"
,
"mediaType"
=>
file
.
content_type
,
"mediaType"
=>
content_type
,
"href"
=>
url_for
(
Path
.
join
(
uuid
,
:cow_uri
.
urlencode
(
file
.
filename
)))
}],
"name"
=>
file
.
filename
,
...
...
test/upload_test.exs
View file @
e942e1e5
...
...
@@ -9,5 +9,17 @@ test "copies the file to the configured folder" do
assert
data
[
"name"
]
==
"an [image.jpg"
assert
List
.
first
(
data
[
"url"
])[
"href"
]
==
"http://localhost:4001/media/
#{
data
[
"uuid"
]
}
/an%20%5Bimage.jpg"
end
test
"fixes an incorrect content type"
do
file
=
%
Plug
.
Upload
{
content_type:
"application/octet-stream"
,
path:
Path
.
absname
(
"test/fixtures/image.jpg"
),
filename:
"an [image.jpg"
}
data
=
Upload
.
store
(
file
)
assert
hd
(
data
[
"url"
])[
"mediaType"
]
==
"image/jpeg"
end
test
"does not modify a valid content type"
do
file
=
%
Plug
.
Upload
{
content_type:
"image/png"
,
path:
Path
.
absname
(
"test/fixtures/image.jpg"
),
filename:
"an [image.jpg"
}
data
=
Upload
.
store
(
file
)
assert
hd
(
data
[
"url"
])[
"mediaType"
]
==
"image/png"
end
end
end
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment