2010-12-30 8 views
0

私はDjangoで非常に簡単だと思うことをしようとしています:ユーザーの要求に基づいてXMLファイルを動的に作成し、そのファイルをダウンロードできるようにします。ダウンロードしたDjangoファイルが空です

xmlFile = open({PATH_TO_FILE}, 'r') 
fileWrap = FileWrapper(xmlFile) 
response = HttpResponse(fileWrap, mimetype='text/xml') 
response['Content-Disposition'] = 'attachment; filename=data.xml' 
response['Content-Length'] = os.path.getsize({PATH_TO_FILE}) 
return response 

ファイルのダウンロードを、しかし、ダウンロードは、私がいることが確認されたにも関わらず、常に空です:私は見ているすべてのものに基づいて、グーグルのトンを行われてきた、私は右のそれをやっていますファイルがディスク上の正しい場所に存在し、空ではありません。私は3つの異なるブラウザ(Firefox、Safari、Chrome)でこれを試しましたが、それはブラウザの場合のためですが、結果は毎回同じです。アー。

+1

@Ericオコナー:なぜあなたはそれの後にそれをロードするために、ディスク上のファイルを格納していますか?既にファイルとして保存している場合は、ユーザーを 'xml'ファイルにリダイレクトするほうがよいでしょうか?それがあなたの目的でない場合は、XMLレスポンスを作成するだけで返す必要があります。 – Wolph

+0

私はちょうどこのトピックに気づいたので、これは重複しているようです:http://stackoverflow.com/questions/3213060/django-download-file-not-working/3213548#3213548 – Wolph

+0

私は他の問題しかし、それは重複ではありません。その問題では、その人は自分のファイル情報をFileWrapperクラスに正しく渡していませんでした。具体的には、ユーザーがFileFieldオブジェクトで表されるファイルをダウンロードできるようにしようとしていて、フィールドデータに正しくアクセスしていなかった。あなたの質問に答えて、私はファイルがWebサーバーによって静的に提供されることを望んでいません。私は、Djangoによってダウンロードが処理されるようにしたいと思います。追加処理が必要なためです。 –

答えて

0

は、あなたのオリジナルのポストに私のコメントを参照してください、しかし、あなたはこれに2行目を変更する場合には機能があります。

fileWrap = FileWrapper(xmlFile.read()) 
関連する問題