私のフォームの送信ボタンで、ユーザーはファイルをダウンロードできます。ここで、フォームに成功メッセージを追加したいと思います。
これが私のsend_file 関数です:
def send_file(request, serverFileName, clientFileName):
wrapper = FileWrapper(open(serverFileName))
content_type = mimetypes.guess_type(serverFileName)[0]
response = HttpResponse(wrapper,content_type=content_type)
response['Content-Length'] = os.path.getsize(serverFileName)
response['Content-Disposition'] = "attachment; filename=%s"%clientFileName
return response
私からしてみれば...
以下のコードは機能します (ファイルがクライアントのブラウザーに送信されます)。
serverDirectory = settings.MEDIA_ROOT+"/export/"
fileName="europeanActs.csv"
return send_file(request, serverDirectory+fileName, fileName)
ここで、メッセージを追加して、Ajax 経由で取得しようとしています。動作しません:
serverDirectory = settings.MEDIA_ROOT+"/export/"
fileName="europeanActs.csv"
response_dic['msg']="The acts have been downloaded with success!"
response_dic["msg_class"]="success_msg"
response_dic["file"]=send_file(request, serverDirectory+fileName, fileName)
return HttpResponse(simplejson.dumps(response_dic), mimetype="application/json")
response_dic["file"]
明らかにjsonオブジェクトではないため、ajaxエラーがあります。形式をjsonに変更できると思いますが、それは本当の問題ではありません。本当の問題は、Ajax にファイルを送信してダウンロードするように指示する方法です。