使用django的mp3流媒体问题

时间:2012-02-23 17:21:31

标签: python django

我正在试图弄清楚如何使用django传输mp3文件。我使用了http://djangosnippets.org/snippets/365/中的一些代码来帮助我解决这个问题。由于某种原因,下面的代码给我一个文件小于服务器上存储的实际文件的文件。大小在下载窗口中正确显示,但实际文件要小得多。我尝试使用下面的代码发送文本文件,它似乎工作得很好。我似乎无法弄清楚出了什么问题。

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

1 个答案:

答案 0 :(得分:2)

您是否阅读过http://djangosnippets.org/snippets/365/的评论?尝试:

  

对于Windows上的用户,您需要为文本文件以外的任何内容指定“读取二进制”模式:

     

wrapper = FileWrapper(file(filename),“rb”)

  

通过一些调整得到了这个:

     

wrapper = FileWrapper(open(filename,'rb'))