Rails читает строку base64 из загруженного файла без сохранения файла - PullRequest
0 голосов
/ 26 февраля 2019

Для моего проекта Ruby on Rails у меня есть форма, которая позволяет пользователю загружать файл (например, файл jpg для изображения).Я не хочу сохранять это изображение как файл в моем приложении.Однако я хочу извлечь строку base64 из загруженного изображения.

Так что для формы у меня (я использую Slim)

 = form_tag somepath, method: :post, remote: true do
   .form-group
        = label_tag :file
        = file_field_tag :file

Затем в контроллере у меня есть

def allowed_params
  params.permit([:file])
end

Однако, когда я делаю File.open(allowed_params[:file], 'rb'){|f| f.read} послезагружая файл photo.jpg с помощью пользовательского интерфейса, я получил ошибку Errno::ENOENT Exception: No such file or directory @ rb_sysopen - C:\fakepath\photo.jpg

Я попытался Base64.encode64(File.open('someotherfile.jpg').read), где someotherfile.jpg - это файл, который, я знаю, где он и действителен, и он сработал хорошо.

Есть предложения?Заранее спасибо.

1 Ответ

0 голосов
/ 26 февраля 2019

Можете ли вы убедиться, что используете многочастную форму?Вы можете сделать это, установив multipart: true в вашем form_tag помощнике (например, form_tag somepath, method: :post, remote: true, multipart: true).Тогда вы должны иметь доступ к содержимому контроллера через allowed_params[:file].read.

...