Rails использует send_file для отправки нескольких файлов - PullRequest
5 голосов
/ 08 ноября 2011

В настоящее время я пытаюсь отправить несколько файлов за пределы моего приложения, используя метод Rails send_file. Он просматривает все файлы, но отправляет только последний в каталоге. Вот мой код.

  Dir.foreach(@dir) do |entry|
    if entry != "." && entry != ".." && entry != ".DS_Store" && entry != ".title"
      send_file(@dir + entry, :disposition => 'inline')
      logger.info("File: " + @dir + entry)
    end
  end

Любая помощь приветствуется!

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011

send_file сообщает контроллеру, что он должен ответить на запрос браузера, отправив файл. - В отличие от рендеринга представления, отправки JSON и т. Д.

При обычном использовании вы отправляете ровно один ответ в HTTP. (Я опускаю обсуждение длинных опросов и других эзотерических типов ответов. Я также опускаю многокомпонентные ответы HTTP, которые обычно не поддерживаются в настоящее время.)

Поскольку вы можете отправить только один файл, сделайте это! Один файл может быть zip-файлом из нескольких файлов, но тогда пользователю потребуется распаковать их.

Альтернативой является отображение нескольких ссылок на скачивание на веб-странице, предлагая пользователю загружать одну за другой для выполнения нескольких загрузок.

В качестве примера UX (User Experience): отправьте электронное письмо себе с несколькими вложениями. Затем используйте GMail и посмотрите, как они представляют несколько файлов для загрузки.

1 голос
/ 08 ноября 2011

Вы можете отправить только один файл за один запрос; если вы хотите отправить несколько файлов, вам нужно сжать их или связать иным образом.

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