PythonでCSVファイルをアップロードしようとしているのですが、
ascii' codec can't encode characters in position・・・とエラーが発生します。
html
1<input id="file" name="file" type="file">
Python
1@app.route('/upload', methods=['POST']) 2def upload(): 3 file = request.files['file'] 4 5 _rootpath = '/tmp/' 6 _filePath = os.path.join(_rootpath , 'メンバー.csv') 7 try: 8 _file.save(_filePath) 9 except Exception as _e: 10 print(_e)
上記の_eに最初に記したエラーが入っています。
ファイル名を英数字のみにすると問題なくアップロードはされました。
そこで
Python
1_file.save(_filePath.encode('utf-8'))
としたら上記のエラーは解消されたのですが、
'bytes' object has no attribute 'write'
とエラーが表示されました。
どのような対応が必要かわかる方、教えていただけると助かります。
Traceback (most recent call last):
File "/var/www/flaskr/view/test.py", line 10, in upload
_file.save(_filePath)
File "/usr/lib/python3.6/site-packages/werkzeug/datastructures.py", line 2725, in save
dst = open(dst, 'wb')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 41-44: ordinal not in range(128)
追記しました。
エラーのtracebackを出力したので追記してます。
サーバの環境はAWSのCENTOSになります。
環境変数のLANGは「ja_JP.utf8」になっています。