2012-02-23 91 views
1

我想知道如何使用Django傳輸MP3文件。我使用了http://djangosnippets.org/snippets/365/的一些代碼來幫助我解決這個問題。出於某種原因,下面的代碼給了我一個比存儲在服務器上的實際文件更小的文件。大小在下載窗口中正確顯示,但實際文件要小得多。我試過使用下面的代碼發送文本文件,它似乎工作得很好。我似乎無法弄清楚什麼是錯的。使用Django進行mp3流式傳輸的問題

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(文件(文件名), 「RB」)

得到這個工作有一些調整:

包裝= FileWrapper(開放(文件名,'rb'))

+0

謝謝,它修復了它。抱歉不先閱讀評論。 – nerdap 2012-02-25 12:03:52