1

我正在尝试将 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 文件。

4

1 回答 1

2

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

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

如果您以文本模式(默认)打开文件,则各种行尾都被规范化为\n,这对文本非常有用,但在二进制信息(如 MP3 文件)中则是一个大问题。

请注意,我在这里使用的是open函数,而不是file构造函数;从file文档中:

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

于 2012-08-10T06:23:44.087 回答