Я не очень знаком с обработкой файлов в ruby.Проблема, с которой я столкнулся, заключается в том, что чтение и запись бинарного файла не дают точно такой же файл.
clone = Tempfile.new(tempfile.original_filename)
FileUtils.copy_stream(tempfile, clone)
clone.flush
Из рисунка ниже видно, что это не точная копия файла, когда я пытаюсь открыть вновь созданный файл в программе просмотра изображений, он сообщает, что файл поврежден.Я попытался скопировать файл различными способами, например clone.write(tempfile.read)
и т. Д., Но безуспешно.
* Средство просмотра файлов также указывает, что оригинал - ANSI Dos / Windows, а клон - ANSI.Macintosh.Размер файла также отличается примерно на 200 байт.
На самом деле я пытаюсь просто использовать Tempfile дважды.Файл загружается через рельсы и передается мне как Tempfile.Я хочу отправить его двум различным службам restful, и RestClient.post
автоматически закроет файл.Другой вариант - отправить клону своего рода в потоке памяти RestClient, чтобы он не мог закрыть мой файл.Если я отправляю File.open(tempfile.path)
в RestClient, он выдает тот же поврежденный файл, это указывает на то, что проблема заключается в чтении, а не в записи.Если я отправляю исходный объект Tempfile в RestClient, он работает отлично, но затем он закрывается и удаляется, и я не могу отправить его снова.
Пожалуйста, помогите!
С уважением,
Pierre