2012-02-23 11 views
1

djangoを使用してmp3ファイルをストリーミングする方法を理解しようとしています。私はこれを助けるためにhttp://djangosnippets.org/snippets/365/のコードのいくつかを使用しました。何らかの理由で、以下のコードでは、サーバーに格納されている実際のファイルよりもサイズが小さいファイルが表示されます。サイズはダウンロードウィンドウに正しく表示されますが、実際のファイルははるかに小さくなります。私は下のコードを使用してテキストファイルを送信しようとしたが、うまくいくようだ。私は何が間違っているのか分からないようです。djangoを使用したmp3ストリーミングの問題

def play_song(request, id): 
    song = Song.objects.get(pk=id) 
    # song is an object which has a FileField name file 
    filepath = os.path.join(MP3_STORAGE, song.file.name).replace('\\', '/') 
    wrapper = FileWrapper(file(filepath)) 
    response = HttpResponse(wrapper, content_type='audio/mpeg') 
    response['Content-Length'] = os.path.getsize(filepath.replace('/', '\\')) 
    response['Content-Disposition'] = 'attachment; filename=%s' % song.file.name 
    return response 

答えて

2

あなたはhttp://djangosnippets.org/snippets/365/のコメントを読んでいましたか?試してみてください:

テキストファイル以外の何のためのモード "バイナリを読み込む" を指定する必要がありますWindows上の人々のために

ラッパー=のFileWrapper(ファイル(ファイル名)、 "RB")

または

は、いくつかの調整で、この作業を得た:

(ラッパー=のFileWrapper(オープンファイル名、 'rb'))

+0

ありがとうございました。最初にコメントを読まないことをお詫びします。 – nerdap

関連する問題