前提・実現したいこと
PythonとFlaskでWebアプリケーションの作成をしています。
フォームから受け取ったファイルの形式をpython-magicパッケージを用いて、
より正確に判定しようとしています。
追記:
ファイルを保存する前に判定し、望んだ形式であれば保存するといったことを想定しています。
発生している問題・エラーメッセージ
下記のコードでファイルの種類の判定を行おうとすると以下のエラーメッセージが出てしまう。
TypeError: expected str, bytes or os.PathLike object, not FileStorage
該当のソースコード
python
1from flask import Flask, redirect, request 2from flask import render_template, send_file 3import magic 4 5FILE_FORMAT = ['text/plain', 'image/png', 'image/jpeg', 'application/pdf'] 6 7@app.route('/upload', methods=['POST']) 8def upload(): 9 # アップロードしたファイルの確認 10 upfile = request.files.get('upfile', None) 11 mime = magic.from_file(upfile, mime=True) 12 if mime in FILE_FORMAT: 13 return msg('成功')
試したこと
htmlのformから受け取れるファイルの実態は
werkzeug.datastructures.FileStorage
とのことで以下のように変更し試してみました。
formからはテキストファイル(.txt)を送信しました。
試したコード1
mime = magic.from_file(upfile.filename, mime=True)
エラーメッセージ1
FileNotFoundError: [Errno 2] No such file or directory: 'a.txt'
試したコード2
mime = magic.from_file(upfile.mymetype, mime=True)
エラーメッセージ2
FileNotFoundError: [Errno 2] No such file or directory: 'text/plain'
補足情報
以下のバージョンを使用しています
Python 3.6.4
Flask 1.1.1
Werkzeug 1.0.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。