对于当前项目,我正在考虑实现WebDAV以呈现客户端可以访问的虚拟文件存储.到目前为止我只进行了Google研究,但看起来我只能实现两种方法:
GET, PROPFIND
我认为这很棒.我只是好奇.如果我想通过以下方式实现文件上传:
PUT
我还没有实现它,但看起来很简单.我唯一担心的是,如果用户使用标准的Vista Explorer或OSX Finder,是否会显示进度表.
我想我正在寻找一些有WebDAV经验的人的故事.
对于许多WebDAV客户端甚至是只读访问,您还需要支持OPTIONS.如果你想支持上传,显然需要PUT,有些客户端(MacOS X?)需要锁定支持.
(顺便说一句,RFC 4918是信息的授权来源).
我在大约一天的工作中实现了大部分WebDAV协议:http://github.com/nfarina/simpledav
我用Python编写它在Google App Engine上运行,我希望任何其他语言都是类似的努力.总而言之,这是两页代码.
我实现了以下方法:OPTIONS,PROPFIND,MKCOL,DELETE,MOVE,PUT,GET.到目前为止,我已经测试过Transmit和Cyberduck,并且两者都很好用.
希望这可以为那些对实现WebDAV服务器感兴趣的下一个人提供一些指导.这不是一个困难的协议,它只是非常密集的抽象语言,如'深度'和'收藏'和等等.
这是规范:http://www.webdav.org/specs/rfc4918.html
但了解协议的最佳方法是观察客户端与工作服务器的交互.我使用Transmit连接到Box.net的WebDAV服务器并使用Charles Proxy监控流量.
派对迟到了,但我已经实现了大部分webdav协议,我可以放心地告诉你需要实现大部分协议.
对于OS/X,你需要2级WebDAV支持,其中包括LOCK和UNLOCK(我发现完全实现http If:标题特别困难,但对于Finder,你只需要一点点.)
这些是我个人的一些发现:
http://sabre.io/dav/clients/windows/ http://sabre.io/dav/clients/finder/
希望这可以帮助