size limit

This commit is contained in:
Pete Matsyburka
2026-02-19 14:08:27 +02:00
parent 1b41af798d
commit 1d2394e31e
+7
View File
@@ -18,6 +18,7 @@ module Templates
].freeze
ANNOTATIONS_SIZE_LIMIT = 6.megabytes
MAX_ZIP_SIZE = 100.megabytes
InvalidFileType = Class.new(StandardError)
PdfEncrypted = Class.new(StandardError)
@@ -72,9 +73,15 @@ module Templates
Array.wrap(files).each do |file|
if file.content_type == ZIP_CONTENT_TYPE || file.content_type == X_ZIP_CONTENT_TYPE
total_size = 0
Zip::File.open(file.tempfile).each do |entry|
next if entry.directory?
total_size += entry.size
raise InvalidFileType, 'zip_too_large' if total_size > MAX_ZIP_SIZE
tempfile = Tempfile.new(entry.name)
tempfile.binmode
entry.get_input_stream { |in_stream| IO.copy_stream(in_stream, tempfile) }