我正在尝试将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文件。
答案 0 :(得分:2)
您需要以二进制模式打开MP3文件:
wrapper = FileWrapper(open(filename, 'rb'))
如果你用textmode(默认值)打开文件,那么各种行结尾会被标准化为\n
,这对于文本非常有用,但在二进制信息中,例如MP3文件这是一个很大的问题。
请注意,我在这里使用的是open
function,而不是file
constructor;来自file
文档:
打开文件时,最好使用
open()
而不是直接调用此构造函数。file
更适合进行类型测试(例如,编写isinstance(f, file)
)。