Skip to content

Commit

Permalink
Fix error when processing remote files with unusually long names (#28823
Browse files Browse the repository at this point in the history
)
  • Loading branch information
ClearlyClaire committed Jan 23, 2024
1 parent d79ddb1 commit fb2063d
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion lib/paperclip/response_with_limit_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def initialize(target, options = {})
private

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)
@content_type = ContentTypeDetector.new(@tempfile.path).detect
@size = File.size(@tempfile)
Expand All @@ -43,6 +43,13 @@ def copy_to_tempfile(source)
source.response.connection.close
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
disposition = @target.response.headers['content-disposition']
disposition&.match(/filename="([^"]*)"/)&.captures&.first
Expand Down

0 comments on commit fb2063d

Please sign in to comment.