forked from fedi/mastodon
Fix error when processing remote files with unusually long names (#28823)
This commit is contained in:
parent
b377f82b1d
commit
779237f054
|
@ -16,7 +16,7 @@ module Paperclip
|
||||||
private
|
private
|
||||||
|
|
||||||
def cache_current_values
|
def cache_current_values
|
||||||
@original_filename = filename_from_content_disposition.presence || filename_from_path.presence || 'data'
|
@original_filename = truncated_filename
|
||||||
@tempfile = copy_to_tempfile(@target)
|
@tempfile = copy_to_tempfile(@target)
|
||||||
@content_type = ContentTypeDetector.new(@tempfile.path).detect
|
@content_type = ContentTypeDetector.new(@tempfile.path).detect
|
||||||
@size = File.size(@tempfile)
|
@size = File.size(@tempfile)
|
||||||
|
@ -43,6 +43,13 @@ module Paperclip
|
||||||
source.response.connection.close
|
source.response.connection.close
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def truncated_filename
|
||||||
|
filename = filename_from_content_disposition.presence || filename_from_path.presence || 'data'
|
||||||
|
extension = File.extname(filename)
|
||||||
|
basename = File.basename(filename, extension)
|
||||||
|
[basename[...20], extension[..4]].compact_blank.join
|
||||||
|
end
|
||||||
|
|
||||||
def filename_from_content_disposition
|
def filename_from_content_disposition
|
||||||
disposition = @target.response.headers['content-disposition']
|
disposition = @target.response.headers['content-disposition']
|
||||||
disposition&.match(/filename="([^"]*)"/)&.captures&.first
|
disposition&.match(/filename="([^"]*)"/)&.captures&.first
|
||||||
|
|
Loading…
Reference in a new issue