[解決済み] Flask - Bad Request ブラウザ(またはプロキシ)は、このサーバーが理解できないリクエストを送信しました [重複]。
2022-03-03 11:45:55
質問
flaskを使ってMongoDBにファイルアップロード&データ入力のタスクを実行しようとしています。 しかし、フォームに入力し、画像をアップロードすると、このエラーが発生しました。
不正なリクエスト ブラウザ(またはプロキシ)が、このサーバーが理解できないリクエストを送信しました。
私のHTMLコード
<form class="form-check form-control" method="post" enctype="multipart/form-data" action="{{ url_for('index') }}">
<label>Full Name*</label></td>
<input name="u_name" type="text" class="text-info my-input" required="required" />
<label>Email*</label>
<input name="u_email" type="email" class="text-info my-input" required="required" />
<label>Password*</label>
<input name="u_pass" type="password" class="text-info my-input" required="required" />
<label>Your Image*</label>
<input name="u_img" type="file" class="text-info" required="required" /></td>
<input name="btn_submit" type="submit" class="btn-info" />
</form>
私のPythonコードです。
from flask import Flask, render_template, request, url_for
from flask_pymongo import PyMongo
import os
app = Flask(__name__)
app.config['MONGO_DBNAME'] = 'flask_assignment'
app.config['MONGO_URI'] = 'mongodb://<user>:<pass>@<host>:<port>/<database>'
mongo = PyMongo(app)
app_root = os.path.dirname(os.path.abspath(__file__))
@app.route('/', methods=['GET', 'POST'])
def index():
target = os.path.join(app_root, 'static/img/')
if not os.path.isdir(target):
os.mkdir(target)
if request.method == 'POST':
name = request.form['u_name']
password = request.form['u_pass']
email = request.form['u_email']
file_name = ''
for file in request.form['u_img']:
file_name = file.filename
destination = '/'.join([target, file_name])
file.save(destination)
mongo.db.employee_entry.insert({'name': name, 'password': password, 'email': email, 'img_name': file_name})
return render_template('index.html')
else:
return render_template('index.html')
app.run(debug=True)
解決方法は?
このエラーは
BadRequestKeyError
に存在しないキーにアクセスしたためです。
request.form
.
ipdb> request.form['u_img']
*** BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
アップロードされたファイルのキーは
request.files
であって
request.form
ディクショナリを使用します。また、ループをなくす必要があるのは、以下のキーで指定された値が
u_img
のインスタンスです。
FileStorage
であって
反復可能
.
@app.route('/', methods=['GET', 'POST'])
def index():
target = os.path.join(app_root, 'static/img/')
if not os.path.isdir(target):
os.makedirs(target)
if request.method == 'POST':
...
file = request.files['u_img']
file_name = file.filename or ''
destination = '/'.join([target, file_name])
file.save(destination)
...
return render_template('index.html')
関連
-
ピロウズ画像色処理の具体的な活用方法
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み] Flaskのリクエストで受信したデータを取得する
-
[解決済み] Flaskの開発サーバーをネットワーク上で見えるように設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
pythonを使ったオフィス自動化コード例
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] Flaskのリクエストで受信したデータを取得する