【问题标题】:SimpleHTTPServer, Detecting when file transfer is finished?SimpleHTTPServer,检测文件传输何时完成?
【发布时间】:2015-09-10 11:32:06
【问题描述】:

我正在使用 SimpleHTTPServer 制作简单的文件共享实用程序。我希望能够在 http 传输完成时捕捉到,即客户端文件下载完成时。那时我想执行一些操作。这可能吗?

【问题讨论】:

    标签: python simplehttpserver


    【解决方案1】:

    您可以覆盖 SimpleHTTPServer 模块中的请求处理程序。我在下面放了一个sn-p

    from __future__ import print_function
    import os
    import SimpleHTTPServer
    import SocketServer
    
    
    class MySimpleHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    
        def do_GET(self):
            """Serve a GET request."""
            f = self.send_head()
            if f:
                try:
                    self.copyfile(f, self.wfile)
                finally:
                    if(os.path.isfile(self.translate_path(self.path))):
                        print("Log this download:", self.translate_path(self.path))
                    f.close()
    
    PORT = 8000
    
    Handler = MySimpleHTTPRequestHandler
    
    httpd = SocketServer.TCPServer(("", PORT), Handler)
    
    print("serving at port", PORT)
    httpd.serve_forever()
    

    【讨论】:

    • 要明确一点:即使客户端因下载不完整而断开连接,这也会触发finally 部分,对吧?
    • 是的,你是对的。如果请求完全被用户不间断地接收,似乎很难轻松识别。
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 2011-03-05
    • 1970-01-01
    • 2011-11-14
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多