1

私のフォームの送信ボタンで、ユーザーはファイルをダウンロードできます。ここで、フォームに成功メッセージを追加したいと思います。

これが私の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 にファイルを送信してダウンロードするように指示する方法です。

4

1 に答える 1