2012-02-23 2 views
1

Я пытаюсь понять, как передавать файлы в формате mp3 с помощью django. Я использовал код из http://djangosnippets.org/snippets/365/, чтобы помочь мне в этом. По какой-то причине приведенный ниже код дает мне файл меньшего размера, чем фактический файл, хранящийся на сервере. Размер отображается правильно в окне загрузки, но фактический файл выходит намного меньше. Я попытался отправить текстовые файлы, используя приведенный ниже код, и, похоже, он работает нормально. Я не могу понять, что случилось.Проблемы с потоковой передачей mp3 с использованием django

def play_song(request, id): 
    song = Song.objects.get(pk=id) 
    # song is an object which has a FileField name file 
    filepath = os.path.join(MP3_STORAGE, song.file.name).replace('\\', '/') 
    wrapper = FileWrapper(file(filepath)) 
    response = HttpResponse(wrapper, content_type='audio/mpeg') 
    response['Content-Length'] = os.path.getsize(filepath.replace('/', '\\')) 
    response['Content-Disposition'] = 'attachment; filename=%s' % song.file.name 
    return response 

ответ

2

Вы прочитали комментарии на http://djangosnippets.org/snippets/365/? Попробуйте:

Для людей на Windows, вам нужно указать «прочитать двоичный режим» для чего-нибудь другого, чем текстовый файл:

обертке = FileWrapper (файл (имя файла), «Р.Б.»)

или

получил эту работу с несколькими настройками:

обертка = FileWrapper (открытой (filename, 'rb'))

+0

Спасибо, что исправил его. Извинения за то, что вы не читали комментарии в первую очередь. – nerdap

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