2017-09-26 3 views
0

私はファイルをアップロードするために竜巻Webサーバーに基づいて非常に単純なpythonスクリプトを作成しようとしています。しかし、私はキーのHTMLフォームにはOKですが、 'KeyError'を取得しています。Python TornadoファイルのアップロードでKeyErrorが発生する

ここにアップロードされたファイル名を見るためのPythonコードを示します。

import tornado.ioloop 
import tornado.web 

class IndexHandler(tornado.web.RequestHandler): 
    def get(self): 
     self.write("Bismillahir Rahmanir Raheem") 
     self.render('form.html') 

class UploadHandler(tornado.web.RequestHandler): 
    def post(self): 
     self.write("Alhamdulillah, here") 
     if self.request.files is not None: 
      self.write("Inside the if") 
      uploadFile = self.request.files['my_file'][0] 
      self.write(uploadFile['filename']) 

def make_app(): 
    return tornado.web.Application([ 
     (r"/", IndexHandler), 
     (r"/upload", UploadHandler) 
    ]) 

if __name__ == "__main__": 
    app = make_app() 
    app.listen(8888) 
    tornado.ioloop.IOLoop.current().start() 

とHTML形式は以下の通りです:

<html> 
    <head> 
     <title>Testing file upload</title> 
    </head> 
    <body> 
     <h1>Testing file upload</h1> 
     <form enctype="multipart/formdata" method="post" action="/upload"> 
      <input type="file" name="my_file"/> 
      <input type="Submit" name="upload" value="Upload"/> 
     </form> 
    </body> 
</html> 

しかし、私は、ファイルを押しアップロード]ボタンを選択するたびに、私は

500を取得:内部サーバーエラー

そして、 PyCharmエディタで次のエラーが表示されます。 ファイル "C:/Users/Mushfique/Desktop/file-upload/upload.py"、14行目、投稿内 uploadFile = self.request.files HTMLフォーム内の[ 'MY_FILE'] [0]

KeyError: 'my_file' ERROR:tornado.access:500 POST /upload (::1) 1.00ms

けれども、私は、ファイルの入力フィールド名として 'MY_FILE' を使用しました。

答えて

1

あなたはそこにタイプミスをしました:

<form enctype="multipart/formdata" ...> 

それはmultipart/form-data(ハイフンに注意)でなければなりません。

+0

Ops!私はPythonとTornadoで新しいので、私には何か知られていない問題であると思っていました。私の悪い。 :( あなたの答えは何でもありがとう。 –

関連する問題