HTTP POST 経由でファイルのアップロードを受け入れる単純なサービスを実行しようとしていますが、投稿要求が完了した後、実際のファイル データがどこにあるかを把握するのに苦労しています。
これまでのコードは次のとおりです。
from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.internet import reactor
#import cgi
class FormPage(Resource):
def render_GET(self, request):
return """
<html>
<body>
<form method="POST">
Text: <input name="text1" type="text" /><br />
File: <input name="file1" type="file" /><br />
<input type="submit" />
</form>
</body>
</html>
"""
def render_POST(self, request):
response = '<p>File: %s</p>' % request.args['file1'][0]
response += '<p>Content: %s</p>' % request.content.read()
return '<html><body>You submitted: %s</body></html>' % (response)
root = Resource()
root.putChild("form", FormPage())
factory = Site(root)
reactor.listenTCP(8080, factory)
reactor.run()
そして、私が得る応答は次のとおりです。
あなたが提出したもの:
ファイル: test.txt
内容: text1=sdfsd&file1=test.txt
この件に関して私が見つけることができる他のほとんどすべては、プロパティを持つと思われるIRequest
オブジェクトを使用することを指していますが、ドキュメントには記載されておらず、実行するとエラーがスローされます。IRequest.files
ファイルを受け取った後の最終目標は、ファイルを特定のフォルダーに移動してから、さらにコードを実行することです。