1

audio タグで使用できる django テンプレートに MP3 ファイルを提供しようとしています。次のビューを使用しています。

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 にアクセスすると、0 kb の MP3 ファイルが提供されます。

4

1 に答える 1

2

MP3 ファイルをバイナリ モードで開く必要があります。

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

テキストモード (デフォルト) でファイルを開くと、さまざまな行末が に正規化され\nます。これはテキストには最適ですが、MP3 ファイルなどのバイナリ情報では大きな問題になります。

ここではコンストラクターではなくopen関数を使用していることに注意してください。ドキュメントから:filefile

ファイルを開くときは、open()このコンストラクターを直接呼び出す代わりに使用することをお勧めします。file型テスト (たとえば、書き込みisinstance(f, file)) により適しています。

于 2012-08-10T06:23:44.087 に答える