Джанго: как правильно дать mp3 файл - PullRequest
1 голос
/ 19 мая 2011

Проблема в том, что я не могу изменить позицию воспроизведения, нажимая на временную шкалу в Google Chrome (она всегда воспроизводится от начала до конца)
Если Nginx дает mp3-файл клиенту, все равно OK , и я могу изменить положение игры.


В моем скрипте я задаю mp3 следующим образом:

from django.core.servers.basehttp import FileWrapper
wrapper = FileWrapper(file( 'mp3file.mp3' ))
response = HttpResponse(wrapper, content_type='audio/mpeg')
response['Content-Length'] = os.path.getsize( 'mp3file.mp3' )
return response

URL-адрес: http://server/mp3/###.mp3

Таким образом, весь файл передается клиенту,но по-прежнему играть в ПО нельзя изменить.Что не так?

PS: не используйте проприетарные sh * t, такие как mp3 - используйте формат ".ogg"

1 Ответ

4 голосов
/ 19 мая 2011

Это потому, что заголовки должны обрабатывать дополнительные заголовки (например, Accept-Ranges) и обрабатывать частичные запросы файлов

Подобные вещи внутри самого Django - беспорядок (я пробовал это некоторое время назад)), но затем я использовал Apache для обслуживания файлов (таким образом, вы просто не тратите ресурсы)

Вы можете использовать mod_xsendfile , чтобы иметь возможность обслуживать файлы из представления django.используя apache, например:

response = HttpResponse(mimetype='audio/mpeg')
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
response['Accept-Ranges'] = 'bytes'
response['X-Sendfile'] = smart_str(path_to_file)
return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...