回答編集履歴

1

変更例を追加

2020/06/22 07:43

投稿

FiroProchainezo
FiroProchainezo

スコア2401

test CHANGED
@@ -37,3 +37,111 @@
37
37
  printをいちいち書くのが面倒ならIDEを使うのがおすすめです。
38
38
 
39
39
  PyCharmのCommunityなら無料で使えますので、おすすめです。
40
+
41
+
42
+
43
+
44
+
45
+ ## 追記 2020/06/22 16:36
46
+
47
+
48
+
49
+ returnにhtmlを直接書くと、request.filesに値が入らないようです。
50
+
51
+ 対策として、htmlを外出しにしてください。
52
+
53
+
54
+
55
+ 例えば以下のような感じにすると、期待通りに動くと思います。
56
+
57
+
58
+
59
+ rootにtemplatesフォルダを作成してください。
60
+
61
+ templatesフォルダにindex.htmlを追加してください。
62
+
63
+ ```html
64
+
65
+ <!-- index.html -->
66
+
67
+ <!DOCTYPE html>
68
+
69
+ <html lang="ja">
70
+
71
+ <head>
72
+
73
+ <meta charset="UTF-8">
74
+
75
+ <title>テスト</title>
76
+
77
+ </head>
78
+
79
+ <body>
80
+
81
+ <h1>アップロード</h1>
82
+
83
+ <form action="{{ url_for('upload') }}" method="POST" enctype="multipart/form-data">
84
+
85
+ <input type="file" name="upfile">
86
+
87
+ <input type="submit" value="アップロード">
88
+
89
+
90
+
91
+ </form>
92
+
93
+ </body>
94
+
95
+ </html>
96
+
97
+ ```
98
+
99
+
100
+
101
+
102
+
103
+ `app.route('/')`でHTMLを直接出力しているところを、htmlを参照するように変更してください。
104
+
105
+ ```python
106
+
107
+ # app.py
108
+
109
+ from flask import render_template # render_templateを追加してください。
110
+
111
+
112
+
113
+
114
+
115
+ @app.route('/')
116
+
117
+ def index_page():
118
+
119
+ return render_template('index.html')
120
+
121
+ # アップローフォーム ---(*2)
122
+
123
+ # return """
124
+
125
+ # <html><body><h1>アップロード</h1>
126
+
127
+ # <form action="/upload"
128
+
129
+ # method="POST"
130
+
131
+ # enctype="mulitpart/form-data">
132
+
133
+ # <input type="file" name="upfile">
134
+
135
+ # <input type="submit" value="アップロード">
136
+
137
+ # </form>
138
+
139
+ # </body></html>
140
+
141
+ # """
142
+
143
+ ```
144
+
145
+
146
+
147
+ コード先頭のコメントは適宜削除してください。(HTMLの先頭にコメントは入れないでください)