При попытке записать строковый / разархивированный файл в Tempfile , выполнив:
temp_file = Tempfile.new([name, extension])
temp_file.write(unzipped_io.read)
, который выдает следующую ошибку, когда я делаю это с изображением:
Encoding::UndefinedConversionError - "\xFF" from ASCII-8BIT to UTF-8
При исследовании я обнаружил, что это вызвано тем, что Ruby пытается записывать файлы с кодировкой по умолчанию (UTF-8). Но файл должен быть записан как двоичный файл, поэтому он игнорирует любое поведение файла, определяющее c поведение.
Запись обычного File
вы можете сделать это следующим образом:
File.open('/tmp/test.jpg', 'rb') do |file|
file.write(unzipped_io.read)
end
Как это сделать в Tempfile