PythonのFlaskを用いて、画像表示プログラムに挑戦しています。
内容としましては、
Web上で画像をアップロード→画像をimageフォルダに保存→アップロードした画像を表示
というものです。
そこで、何度やっても画像が表示されません。
原因について、みなさまからヒントをいただけますとありがたいです。
【エラー内容】
ローカルにて、image.jpgをアップロードしてみた結果。画像は保存されていません。
File "C:\Users\○○○\anaconda3\lib\site-packages\werkzeug\datastructures.py", line 3021, in save
dst = open(dst, "wb")
FileNotFoundError: [Errno 2] No such file or directory: './static/image/image.jpg'
127.0.0.1 - - [28/Nov/2021 20:55:28] "POST /upload/ HTTP/1.1" 500 -
【ディレクトリ構成】
app/
---static/-image/
---app.py
---templates/-index.html
-run.py
index.html
index.html
1<!doctype html> 2<html> 3 <head> 4 <meta charset="UTF-8"> 5 <title> 6 ファイルをアップロードして判定しよう 7 </title> 8 </head> 9 <body> 10 <h1> 11 ファイルをアップロードして判定しよう 12 </h1> 13 <p>{{message}}</p> 14 <!--Postのときの処理(画像を表示する)--> 15 {% if flag == true %} 16 <div><img src="./static/image/{{image_name}}" alt="{{image_name}}"></div> 17 {% else %} 18 <form action="/upload/" method="post" enctype="multipart/form-data"> 19 <dl> 20 <dt>アップロードする画像を選択してください: 21 <dd><input type="file" id="image" name="image" accept="image/*" required> 22 <dd><input type=submit value=送信> 23 </dl> 24 </form> 25 {% endif %} 26 </body>
app.py
app.py
1# インスタンスの生成 2app = Flask(__name__) 3 4# アップロード先のフォルダを指定 5UPLOAD_FOLDER = './uploads' 6app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 7 8# URL = http://127.0.0.1:5000/ 9@app.route('/') 10def main_page(): 11 flag = False 12 return render_template('index.html', message = '画像を選択しよう', flag = False) 13 14#画像アップロード時の送信ボタンを押すと、ここにつながる 15#POSTの処理 16@app.route('/upload/', methods=['post']) 17def up_post(): 18 # ファイルのリクエストパラメータを取得 19 f = request.files.get('image') 20 # ファイル名を取得 21 filename = secure_filename(f.filename) 22 # ファイルを保存するディレクトリを指定 23 filepath = 'static/image/' 24 # ファイルを保存する 25 f.save(os.path.join(filepath ,filename)) 26 return render_template('index.html', title = 'Form Sample(post)', message = 'アップロードされた画像({})'.format(filename), flag = True, image_name = filename) 27 28 29# 主処理 30if __name__ == "__main__": 31 # 起動 32 app.run(debug=True) 33
【試したこと】
filepath = 'static/image/'+filename
ディレクトリの指定がダメかと思い、書き方を変えたりしましたが、まったく同じエラーになりました。
Python、Flaskにお詳しい方、どうかヒントをいただけますとありがたいです、、。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/29 04:17 編集