我正在尝试运行一个简单的服务,该服务将通过 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
收到文件后的最终目标是将其移动到特定文件夹,然后运行一些进一步的代码。