【问题标题】:Not able to serve mp3 files in django无法在 django 中提供 mp3 文件
【发布时间】:2012-08-10 06:20:40
【问题描述】:

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

【问题讨论】:

  • 我在模板中使用以下音频标签: {{music}} 来自请求网址。你能展示你的模板吗?

标签: python django


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    相关资源
    最近更新 更多