Flaskファイルダウンロードsend_from_Directory中国語エラー処理

854 ワード

前はflask_restfulは中国語のパラメータを受け入れて問題があってシステムのデフォルトの符号化を変更しました
sys.setdefaultencoding('utf8')
その後中国語の問題はないと思いきや、ファイルダウンロードsend_from_Directoryにピットがあり、次のコードを実行してエラーを報告します.
return send_from_directory(dirpath, filename, as_attachment=True)
TypeError: must be unicode, not str
ネット上で次のコードを使ってmakeを使うと言っています.responseは中国語の問題を処理することができて、結果はやはり役に立ちません
response = make_response(send_from_directory(directory, filename, as_attachment=True))
    response.headers["Content-Disposition"] = "attachment; filename={}".format(filename.encode().decode('latin-1'))

誤報の過程をよく見るとsend_from_Directoryメソッド、make_responseはまだ呼び出しを実行していません.符号化の問題がfilenameに直接現れることを考慮して、以下のコードを試して、問題がないことを検証します
send_from_directory(dirpath, filename.encode('utf-8').decode('utf-8'), as_attachment=True)