2010-05-19 5 views
0

Наконец-то выяснилось, как этого добиться!Возобновление загрузки файлов в Ruby on Rails

Оказалось, что это так же просто, как включение 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

Это было, как я это сделал:

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/

Читайте о Content-Length здесь: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13

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

Смежные вопросы