使用Python的BaseHTTPServer从POST请求中获取文件

时间:2015-08-31 16:38:44

标签: python http post https httphandler

我正在运行以下代码来获取POST消息。如何获取文件(使用POST发送)以及如何使用HTTP状态代码const进行响应?

addToFolders()
  

AttributeError:'SSLSocket'对象没有属性'FILES'

2 个答案:

答案 0 :(得分:9)

BaseHTTPRequestHandler将处理第一行和http请求的标题,然后将其余部分留给您。 您需要使用BaseHTTPRequestHandler.rfile

阅读请求的其余部分

您可以使用self.send_response(200)回复200 OK

鉴于您已指定curl命令,以下内容应回答您的问题:

class HttpHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        file_content = self.rfile.read(content_length)

        # Do what you wish with file_content
        print file_content

        # Respond with 200 OK
        self.send_response(200)

请注意,在你的curl命令中使用-d @../some.file,你会说“这是一个ascii文件哦,请删除新行和回车”,因此你使用的文件和您在请求中获得的数据。您的curl命令不会模拟html表单文件上传,如post post。

答案 1 :(得分:1)

通常在

中提供
request.FILES

字典