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
08292004
Commit
08292004
authored
Jun 21, 2018
by
normandy
Browse files
Normalize file extension for uploaded files
parent
90cf75f4
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/upload.ex
View file @
08292004
...
...
@@ -110,20 +110,20 @@ defp get_name(file, uuid, type, should_dedupe) do
if
should_dedupe
do
create_name
(
uuid
,
List
.
last
(
String
.
split
(
file
.
filename
,
"."
)),
type
)
else
unless
String
.
contains?
(
file
.
filename
,
"."
)
do
case
type
do
"image/png"
->
file
.
filename
<>
".png"
"image/jpeg"
->
file
.
filename
<>
".jpg"
"image/gif"
->
file
.
filename
<>
".gif"
"video/webm"
->
file
.
filename
<>
".webm"
"video/mp4"
->
file
.
filename
<>
".mp4"
"audio/mpeg"
->
file
.
filename
<>
".mp3"
"audio/ogg"
->
file
.
filename
<>
".ogg"
"audio/wav"
->
file
.
filename
<>
".wav"
_
->
file
.
filename
parts
=
String
.
split
(
file
.
filename
,
"."
)
new_filename
=
if
length
(
parts
)
>
1
do
Enum
.
drop
(
parts
,
-
1
)
|>
Enum
.
join
(
"."
)
else
Enum
.
join
(
parts
)
end
else
file
.
filename
case
type
do
"application/octet-stream"
->
file
.
filename
"audio/mpeg"
->
new_filename
<>
".mp3"
"image/jpeg"
->
new_filename
<>
".jpg"
_
->
Enum
.
join
([
new_filename
,
String
.
split
(
type
,
"/"
)
|>
List
.
last
()],
"."
)
end
end
end
...
...
test/fixtures/test.txt
0 → 100644
View file @
08292004
this is a text file
test/upload_test.exs
View file @
08292004
...
...
@@ -56,5 +56,31 @@ test "adds missing extension" do
data
=
Upload
.
store
(
file
,
false
)
assert
data
[
"name"
]
==
"an [image.jpg"
end
test
"fixes incorrect file extension"
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:
"an [image.blah"
}
data
=
Upload
.
store
(
file
,
false
)
assert
data
[
"name"
]
==
"an [image.jpg"
end
test
"don't modify filename of an unknown type"
do
File
.
cp
(
"test/fixtures/test.txt"
,
"test/fixtures/test_tmp.txt"
)
file
=
%
Plug
.
Upload
{
content_type:
"text/plain"
,
path:
Path
.
absname
(
"test/fixtures/test_tmp.txt"
),
filename:
"test.txt"
}
data
=
Upload
.
store
(
file
,
false
)
assert
data
[
"name"
]
==
"test.txt"
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