无法在django中提供mp3文件

时间:2012-08-10 06:20:40

标签: python django

我正在尝试将MP3文件提供给可用于音频标签的django模板。我使用以下视图。

def get_file(request):
    filename = FILE_PATH + '\\' + files['k']
    wrapper = FileWrapper(file(filename))
    response = HttpResponse(wrapper, content_type='audio/mp3')
    response['Content-Length'] = os.path.getsize(filename)
    return response

但我无法获取该文件,而当我访问对应于该视图的URL时,它只提供零kb MP3文件。

1 个答案:

答案 0 :(得分:2)

您需要以二进制模式打开MP3文件:

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

如果你用textmode(默认值)打开文件,那么各种行结尾会被标准化为\n,这对于文本非常有用,但在二进制信息中,例如MP3文件这是一个很大的问题。

请注意,我在这里使用的是open function,而不是file constructor;来自file文档:

  

打开文件时,最好使用open()而不是直接调用此构造函数。 file更适合进行类型测试(例如,编写isinstance(f, file))。