Преобразование строки в ActionDispatch :: Http :: UploadedFile - PullRequest
0 голосов
/ 19 марта 2020

Есть ли способ преобразовать строку в ActionDispatch::Http::UploadedFile

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

Спасибо

1 Ответ

0 голосов
/ 20 марта 2020

Просто создайте экземпляр Tempfile и используйте его для инициализации ActionDispatch::Http::UploadedFile:

tempfile = Tempfile.new
tempfile.binmode
# assumes you have a Base64 encoded string passed through JSON
tempfile.write(Base64.decode64(string))

ActionDispatch::Http::UploadedFile.new(
  tempfile: tempfile,
  type: 'application/vnd.ms-excel',
  filename: 'original_file_name.xls'
)

Это не так хорошо документировано, но исходный код действительно прост, как ActionDispatch :: Http :: UploadedFile в основном просто упаковывает временный файл с некоторыми метаданными. Всю тяжелую работу по извлечению файлов из многочастного запроса выполняет Rack. См. Отправка файлов в Rails JSON API для полного примера контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...