-1

ジャンゴ1.4. ダウンロードを展開する機能を開発しようとしています。正しい結果が得られませんでした。以下にコードを添付します。ハイパーリンクをクリックしてダウンロードすると、0 バイトのファイルが生成されました。Content-Length は0デバッグ モードです。私は多くの関連する質問を読んで、いくつかの手がかりを得ましたが、ダウンロード後に 0 バイトのファイルを取得したため、まだ混乱しています。以下のコードを変更するのを手伝ってくれる人はいますか?

   def download_file(request, filepath, filename):
        path_to_file = filepath+"\\"+filename
        serverfile = file(path_to_file, 'rb')
        response = HttpResponse(mimetype='application/force-download')
        response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
        response['Content-Length'] = serverfile.tell()
    return response
4

1 に答える 1

1

.tell()ファイル内の現在の位置を示します。ファイルをまったく読み取っていないため、現在の位置は位置 0 になります。

os.stat(path_to_file).st_sizeファイルサイズをバイト単位で指定するために使用できます。os.path.join(filepath, filename)手動で連結するのではなく、ファイルへの完全な (OS に依存しない) パスを取得するためにも使用する必要があることに注意してください。

于 2013-01-28T10:51:24.987 に答える