8662


ブラウザから送られてきたPOSTのフォームデータをcgi.FieldStorage()として、受け取ろうとするのですが、  
FieldStorage(None, None, [])  
になってしまいます。どうすればいいのでしょうか?

htmlは

[code]

    
    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>data Create</title>
    </head>
    <body>
        <h1>Create</h1>
        <form action="/post" enctype="multipart/form-data" method="POST">
            <div>
                <label for="name">name</label><input type="text" id="name" name="name" required>
            </div>
            <div>
                <input type="number" id="age" name="age" min="0" required>
            </div>
            <div>
                <input type="file" id="fileselector" name="file">
            </div>
            <div><input type="submit" value="送信"></div>
        </form>
    
        <br>
        <div><a href="/">Back to top</a></div>
    </body>
    </html>
    
    
    
    
[/code]

serverは

[code]

    
    import http.server
    import cgi
    
    class handler(http.server.BaseHTTPRequestHandler):
        def do_POST(self):
            print(cgi.FieldStorage()) # FieldStorage(None, None, [])
    
    
[/code]

というふうになっています。


CC BY-SA 3.0
2015-04-01T13:19:40.473
8656
2015-04-01T15:31:16.433
5246
question
python http
POSTで送ったデータをpythonのcgi.FieldStrageで受け取れない


なぜBaseHTTPRequestHandlerでがんばっているのか、という疑問はありますが、以下のようにすれば取得出来ます。

[code]

    import http.server
    import cgi
    import os
    
    class handler(http.server.BaseHTTPRequestHandler):
        def do_POST(self):
            os.environ['REQUEST_METHOD'] = 'POST'
            form = cgi.FieldStorage(self.rfile, self.headers)
    
[/code]


CC BY-SA 3.0
2015-04-01T15:31:16.433
8662
2015-04-01T15:31:16.433
806
8656
answer