Rails / Ruby: загрузка двоичного файла и запись его с помощью File-Object

#ruby #ruby-on-rails-3 #file-upload #binary

#ruby #ruby-on-rails-3 #загрузка файла #двоичный

Вопрос:

Мне нужно загрузить файлы Word и Excel на мой сайт.

Я создаю форму загрузки, загружаю файл и сохраняю его следующим образом:

 f = File.new("public/files/#{user.id.to_s}/filename", "w ")
f.write params[:file].read
f.close
  

Файлы Word и Excel должны быть сохранены как двоичные данные.

К сожалению, файловый режим «b» предназначен только для Windows, и я нахожусь под Linux.

Что делать?

Ваш,

Йорн

Ответ №1:

Режим двоичного файла «b» может отображаться с любой из ключевых букв (r, r , w, w , a, a ), поэтому вы можете сделать это следующим f = File.new("public/files/#{user.id.to_s}/filename", "w b") образом .

И режим «b» не только для Windows. В документации Ruby говорится, что «Режим двоичного файла (может отображаться с любой из ключевых букв r, r , w, w , a, a . Подавляет преобразование EOL <-> CRLF в Windows. И устанавливает внешнюю кодировку в ASCII-8BIT, если явно не указано. «и ничего не говорит о том, что «b» предназначен только для Windows. Это просто говорит о том, что в Windows / Linux он работает по-другому с окончаниями строк. Таким образом, вы можете использовать режим «w b» в linux и Windows.