この辺は初めてなので、単純なものが欠けている可能性があります。ユーザーがcsvドキュメントをアップロードして解析し、csvファイルのデータに基づいて他のアクションを実行できるアプリを作成しようとしています。
次の html を使用し て非常に基本的なフォームを設定します。
HTML
<html>
<head>
<title>
Paginator!
</title>
</head>
<body>
<form method="post">
Enter name of page
<br><input type="text" name="pagename">
<br>
Upload page info: <input type="file" name="csvfile" size="chars"><br>
<input type="submit">
</form>
</body>
</html>
Python コード:
import os
import csv
import webapp2
with open('index.html', 'rb') as f:
HTML = f.read()
print HTML
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/html'
self.response.write(HTML)
def post(self):
self.response.write(self.request.get('pagename'))
in_file = self.request.get('csvfile')
if in_file:
with open(in_file, 'rb') as f:
csvreader = csv.reader(f, delimiter=',')
data = [row for row in csvreader]
app = webapp2.WSGIApplication([('/', MainPage)],
debug=True)
そこで、フォーム情報を含む HTML ファイルを読み込み、GET リクエストがあったときにそれをページに書き込みます/
。
POST リクエストを処理しようとすると、問題が発生します。[Choose File] ボタンを使用して何かをアップロードしようとすると、GoogleApp Engine から No such File エラーが発生します。
エラーメッセージ:
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "C:\Users\Chris\Documents\Code\Python\iqm segmetizer\index.py", line 20, in post
with open(in_file, 'rb') as f:
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver_import_hook.py", line 610, in __init__
super(FakeFile, self).__init__(filename, mode, bufsize, **kwargs)
IOError: [Errno 2] No such file or directory: u'test_page_info.csv'
ユーザー (この場合は自分自身) がフォームから csv ファイルをアップロードできるようにするには、どうすればよいですか?