Возобновление загрузки файлов в Ruby on Rails - PullRequest
0 голосов
/ 19 мая 2010

Наконец-то узнал, как этого добиться!

Оказалось, что это так же просто, как включить xsendfile и установить параметр заголовка Accept-Range

Прочитайте мой ответ ниже

(кстати, в приведенной ниже цитате блока я написал общую ошибку новичков - как и я - сделал. Мы склонны думать, что это следует запрограммировать вручную)

URL должен быть примерно таким: mysite.com/get_file?file_point=100 -> это будет читать из байта 100

  1. Получить смещение из параметра (параметр file_point в нашем примере)
  2. Узнать размер файла (File.size)
  3. Чтение файла со смещения по длине (эквивалент fseek в PHP)
  4. Отправьте файл, используя send_file

Я не знаю, как сделать шаг # 3 в Ruby в шагах выше.

1 Ответ

1 голос
/ 21 мая 2010

Вот как я это сделал:

response.header["Accept-Ranges"] = "bytes"
send_file product.pack.path, :type => product.pack_content_type, :x_sendfile=>true

Я попросил нашего сервера настроить mod_xsendfile, я не знаю, как его настроить сам.

Учебник здесь: http://www.devsource.com/c/a/Techniques/Resumable-File-Downloads-with-ASPNet/2/

Подробнее о содержании можно прочитать здесь: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13

О потоковой передаче доступно здесь: http://api.rubyonrails.org/classes/ActionController/Streaming.html

...