2012-02-27 10 views
9

DjangoのビューでFileFieldにファイルをダウンロードする方法:私はDjangoのモデルにFileFieldにしている

file=models.FileField(verbose_name=u'附件',upload_to='attachment/%Y/%m/%d',max_length=480) 

リンクをウェブページに表示されます。このファイル「http://test.com.cn/home/をプロジェクト/ 89 /添付ファイル/ 2012/02/24/sscsx.txt "

私がしたいのは、ユーザーがファイルリンクをクリックすると、ファイルを自動的にダウンロードします。 ビューでこれを行う方法を教えてもらえますか?

ありがとうございます!

答えて

17

あなたはobject_nameは、そのモデルのオブジェクトであると仮定すると、次のコードを試すことができます。

filename = object_name.file.name.split('/')[-1] 
response = HttpResponse(object_name.file, content_type='text/plain') 
response['Content-Disposition'] = 'attachment; filename=%s' % filename 

return response 

は、直接ファイルを送信するにDjangoのドキュメントの以下の部分を参照してください:https://docs.djangoproject.com/en/dev/ref/request-response/#telling-the-browser-to-treat-the-response-as-a-file-attachment

+0

はあなたに感謝し、それは動作します – Angelia

+0

どのようにobject_nameをそのビューに取得しましたか?どのURLパラメータを使用しましたか? – yretuta

+0

object_nameは、単にDjango Modelオブジェクトを表しているだけで問題はありません。オブジェクトは任意の方法で取得できます。 –

関連する問題