2017-06-15 8 views
0

django.http.response.HttpResponseオブジェクトを返すDjangoビュー(ダウンロードアタッチメント)があります。ファイルをDjangoテンプレートから添付ファイルとしてダウンロードすると、firefoxで動作しません

オブジェクトの辞書表現は次のとおりです。テンプレートで

{ 
    'reason_phrase': u'OK', 
    '_handler_class': None, 
    '_headers': {'content-length': ('Content-Length', '21'), 
       'content-type': ('Content-Type', 'text/plain'), 
       'content-disposition': ('Content-Disposition', 'attachment; 
    filename="upload_file.txt"') 
       }, 
    '_charset': None, 
    '_closable_objects': [], 
    'cookies': <SimpleCookie: >, 
    'closed': False, 
    '_container': ['Upload to file\n'] 
} 

ビューは、ハイパーリンクのクリック時にレンダリングされます。ここでは

<a href="{% url "download-attachment" certificationID=certificationID fileID=attachment.id %}" download> {{attachment.name}}</a> 

certificationIDとファイルIDは、ダウンロード用のURLのパラメータです。アタッチメントビュー。ファイルは、応答の内容-Dispositionヘッダーで指定されたファイル名の添付ファイルとしてダウンロードされるハイパーリンクをクリックすると上のChromeで

、。 Firefoxで

は、ファイルのダウンロードに失敗します。ファイアウォールでのファイルダウンロードの作業を支援する必要があります。

+0

それはどのように* *失敗しましたか?そして、このコンテンツを提供するためにDjangoで何をしていますか? –

+0

@DanielRoseman Djangoでは、django.http.response.HttpResponseクラスのオブジェクトを作成しています。そのオブジェクトをビューから戻します。 '応答=のHttpResponse(データ、CONTENT_TYPE = "text/plainの") 応答[ "コンテンツ説明"] = "ファイル転送" 応答[ "コンテンツの廃棄"] = "アタッチメント;ファイル名= \" % %self.cweResponse.get( "file_name") レスポンス['Content-Length'] = self.cweResponse.get( "size") 返信返信「 Firefoxのダウンロードリストには、失敗したファイル名は開けません。 –

答えて

0

ないクライアントまたはテンプレートの問題。 Firefoxは添付ファイルをダウンロードするためのレスポンスのヘッダにContent-Encodingエンティティを設定する必要があります。エンコーディングがない場合でも、ヘッダを設定する必要があります。 Django HttpResponseオブジェクトを追加したコンテンツエンコーディング。

オブジェクトの新しい辞書表現は次のとおりです。

{ 
    'reason_phrase': u'OK', 
    '_handler_class': None, 
    '_headers': {'content-length': ('Content-Length', '21'), 
       'content-type': ('Content-Type', 'text/plain'), 
       'content-encoding': ('Content-Encoding', 'None'), 
       'content-disposition': ('Content-Disposition', 'attachment; 
    filename="upload_file.txt"') 
       }, 
    '_charset': None, 
    '_closable_objects': [], 
    'cookies': <SimpleCookie: >, 
    'closed': False, 
    '_container': ['Upload to file\n'] 
} 
関連する問題