有没有比这个更好的简单Python WebDAV服务器代码片段?

1 投票
3 回答
4836 浏览
提问于 2025-04-15 11:04

有没有人能提供一个更好的简单Python WebDAV 服务器代码片段?下面的代码(是从一些谷歌搜索结果拼凑起来的)在Python 2.6下似乎能正常工作,但我在想有没有人之前用过的,经过稍微测试过的更完整的代码。我更倾向于只用标准库的代码,而不是第三方的包。这是为了测试代码,所以不需要达到生产环境的标准。

import httplib
import BaseHTTPServer

class WebDAV(BaseHTTPServer.BaseHTTPRequestHandler):
    """
    Ultra-simplistic WebDAV server.
    """
    def do_PUT(self):
        path = os.path.normpath(self.path)
        if os.path.isabs(path):
            path = path[1:]    # safe assumption due to normpath above
        directory = os.path.dirname(path)
        if not os.path.isdir(directory):
            os.makedirs(directory)
        content_length = int(self.headers['Content-Length'])
        with open(path, "w") as f:
            f.write(self.rfile.read(content_length))

        self.send_response(httplib.OK)

def server_main(server_class=BaseHTTPServer.HTTPServer, 
                handler_class=WebDAV):
    server_class(('', 9231), handler_class).serve_forever()

3 个回答

1

WsgiDAV 是一个开源项目,主要用于实现 WebDAV 协议。WebDAV 是一种让你可以通过网络管理文件的协议,简单来说,就是你可以像在本地电脑上一样,通过网络来上传、下载和管理文件。

1

你可以试试akaDAV。这是一个用于Twisted的WebDAV模块。

我觉得这个项目可能不再维护了,但我成功让它运行起来了,它支持大部分操作(除了锁定功能)。

5

或者可以试试 WsgiDAV,这是一个经过改进的PyFileServer版本。

撰写回答