ActiveJob генерирует zip-файл в Tempfile, считывает его данные в переменную, по завершении задания передает данные в кодировке Base64 клиенту, клиент загружает данные через saveAs
Конечный результатне может быть распакован / поврежден.
Я подозреваю, что что-то теряется при кодировании / декодировании, метод создания zip работал раньше в контроллере, но не мог использоваться в производстве, потому что, очевидно, это заняло слишком много времени.долго, поэтому я попробовал этот подход, я просто не могу заставить его работать.
Соответствующая часть задания:
...
zip_data = File.read(temp_file.path)
encoded_zip_data = Base64.encode64(zip_data)
ActionCable.server.broadcast(
"export_channel_#{uuid}", { zip: encoded_zip_data }
)
...
Соответствующая часть кофе, которая обрабатывает полученные данные:
...
received: (data) ->
blob = new Blob([ window.atob data.zip ], {
type: "application/zip"
})
saveAs blob, 'data.zip'
...