Fix error when processing remote files with unusually long names (#28823)
This commit is contained in:
		
							parent
							
								
									cf2a2ed71c
								
							
						
					
					
						commit
						93957daa50
					
				
					 1 changed files with 8 additions and 1 deletions
				
			
		|  | @ -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