#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.