Конвертировать Formdata в файл JPEG в Rails 5 - PullRequest
0 голосов
/ 19 мая 2018

Я работаю с интерфейсом React и API-интерфейсом Rails, и мне нужно знать, как преобразовать данные формы, созданные в интерфейсе с приложенным файлом образа, в файл jpeg внутри контроллера Rails.

До сих пор я был в состоянии направить данные формы на контроллер, и данные формы выглядят так, как показано в моей консоли:

{\"file\"=>#<ActionDispatch::Http::UploadedFile:0x00007f9e3227fb28 @tempfile=#<Tempfile:/var/folders/7j/pqx3w4t571s4hrmdwcq3v6tm0000gn/T/RackMultipart20180519-97088-172hrqu.jpeg>, @original_filename=\"big_facade.jpeg\", @content_type=\"image/jpeg\", @headers=\"Content-Disposition: form-data; name=\\\"file\\\"; filename=\\\"big_facade.jpeg\\\"\\r\\nContent-Type: image/jpeg\\r\\n\">, \"format\"=>:json, \"controller\"=>\"api/v1/images/images\", \"action\"=>\"upload\"}

На основании моих исследований это возможно, но только из доступной литературыдоходит до того, что можно сказать, что это невозможно без описания того, как.

Может ли кто-нибудь указать мне правильное направление или сообщить мне код?

Я использую гем Paperclip в Rails.

1 Ответ

0 голосов
/ 19 мая 2018
  def create_file
    unless params[:file].blank?
      uploaded_io = params[:file]
      path = Rails.root.join("public/system/temp_files/images", uploaded_io.original_filename)
      File.open(path, 'wb') do |file|
        file.write(uploaded_io.read)
      end
      if ExampleModel.create(image: Rails.root.join('public', path.to_s.split('/public/')[1]).open))
        File.delete(path)
      end
    end
  end

Объяснение: -

1- Сначала вам нужно создать физический файл, чтобы сохранить его в вашей БД, поэтому здесь я создал временный файл в публичном каталоге проекта.

2- Просто напишите этот файл, используя временный путь к вашей базе данных.и после этого удалите этот временный физический файл.Предполагая, что название модели ExampleModel и в нем есть одно поле для скрепки image

...