我试图运行一个简单的服务,它将通过httppost接受文件上传,但是在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()
我得到的回答是:
You submitted:
File: test.txt
Content: text1=sdfsd&file1=test.txt
关于这个主题,我能找到的大多数everything else都是指使用一个IRequest
对象,该对象的本应具有一个IRequest.files
属性,但它没有列在documentation中,当我运行它时,它会抛出一个错误。在
接收到文件后的最终目标是将其移动到特定的文件夹中,然后运行一些进一步的代码。在
我也有类似的问题。事实上,你在你的问题下的评论中解决了这个问题,但为了澄清和总结,我写了这个答案。在
为了上传文件,您需要将form'senctype设置为multipart/form data,如下所示:
现在您可以通过请求.args文件'['。要获得原始名称,您需要解析请求.内容,即:
^{pr2}$不过,我不确定这些参数(name和filename)是否总是以这种特定的顺序排列,所以要小心。同时请记住,如果您有多个文件输入,那么它将不起作用。在
相关问题 更多 >
编程相关推荐