Вопрос

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

Оказалось, что так просто, как включение 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 на ступеньках выше.

Это было полезно?

Решение

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

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top