【转】Webdav简介

转自:http://blog.sina.com.cn/s/blog_4894a85e01008dts.html


Webdav简介

WebDAV(Web-based Distributed Authoring and Versioning)是一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

Microsoft windows2000/XP及IE, Office还有Adobe/MicroMedia的DW等都支持Webdav,这又大大增强了Web应用的价值,以及效能。对于需要大量发布内容的用户 而言,应用WebDav可以降低对CMS系统的依赖,而且能够更自由的进行创作。上传、下载变得轻松自如。

有关Webdav的信息主要集中在Webdav 资源站:http://www.webdav.org

用该站一句话来概括Webdav,可以表述为:

Briefly: WebDAV stands for "Web-based Distributed Authoring and Versioning". It is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.

Webdav简介

配置Apache,体验WebDav
介绍再多不如亲自体验一下,到Apache官方网站,找到mod_dav的文档,简单的配置了一下即可实现最基本的Webdav 服务端了。

首先要确保激活mod_dav及mod_dav_fs模块,即在httpd.conf保证有:

LoadModule dav_module modules/mod_dav.so



LoadModule dav_fs_module modules/mod_dav_fs.so







<IfModule mod_dav_fs.c>



# Location of the WebDAV lock database.



DAVLockDB /var/lib/dav/lockdb



</IfModule>



如果用的系统自带apache的rpm包的话,默认就已经安装并配置好mod_dav了。只需要针对具体的目录进行一下配置即可使用。

在httpd.conf增加如下一段配置内容:

Alias /webdav /usr/local/webdav



<Location /webdav>



Dav On



AuthType Basic



AuthName DAV



AuthUserFile /usr/local/webdav/.htpasswd







<LimitExcept GET OPTIONS>



Require valid-user



</LimitExcept>



</Location>



然后创建/usr/local/webdav目录,注意一点,这个目录必须对apache是可写/可读的,所以需要更改owner:

mkdir -p /usr/local/webdav



chown -R apache.apache /usr/local/webdav



最后增加授权用户,用htpasswd程序生成即可。

htpasswd -c /usr/local/webdav/.htpasswd test



连续输入2次test即可生成一个test用户,密码是test的。

然后重启apache。

客户端配置
这里以最常用的Windows 2000/XP为例。Windows 2000/XP等已内置了Webdav的支持,能实现方便的web文件夹功能。

打开“网上邻居”,左边菜单里点击“添加一个网上邻居”,在“键入这个快捷方式要打开的网站、FTP站点或网络位置的地址”中输入Webdav 服务器的URL。在本例里,使用的URL是:
http://www.hzqbbc.com/webdav

Webdav简介

将url填进去后,并完成提示就可以了。访问该Web文件夹时必须输入刚才生成的用户名和密码,这时在网上邻居里就出现一个网络文件夹图标,可以象常规的 文件夹一样进行拖、拉操作。感觉方便极了。再也不用烦琐的使用ftp或cms来操作。

如果希望IE也能使用Webdav的文件夹,则在菜单->打开->勾选“以Web 文件夹方式打开”并输入URL即可。

上载时和web ftp差不多:

Webdav简介

Useful links
http://www.webdav.org/
http://www.webdav.org/other/faq.html
IETF WebDAV Quota
http://jakarta.apache.org/slide/
http://www.carrel.org/2005/03/31/mod_dav-quota-patch-redux/
http://webdav.todo.gr.jp/download/
http://pretender.blogdriver.com/pretender/389261.html
http://httpd.apache.org/docs-2.0/mod/mod_dav_fs.html
http://httpd.apache.org/docs-2.0/mod/mod_dav.html
http://www.needful.de/docs/projekte/webdav-quota/
http://www.geocities.co.jp/Hollywood/4471/webdav/webdav.html
http://mailman.lyra.org/pipermail/dav-dev/2001-March/002132.html
http://lists.samba.org/archive/samba/2004-February/081614.html
### WebDAV 协议及其相关实现 #### 什么是 WebDAVWeb Distributed Authoring and Versioning (WebDAV) 是一种基于 HTTP 的通信协议,扩展了 Hypertext Transfer Protocol (HTTP),允许客户端执行远程文件操作,如创建、移动和复制文件。它最初由 IETF 定义,并成为 RFC 4918 中的标准[^1]。 #### 使用 Python 请求库调用 WebDAV 方法 Python 的 `requests` 库支持通过 `.request()` 方法发送自定义的 HTTP 动词请求。对于某些 WebDAV 实现来说,可能需要用到特定的方法(例如 `MKCOL`),这可以通过如下方式完成: ```python import requests url = 'http://example.com/webdav/resource' data = None # 可选数据参数 response = requests.request('MKCOL', url, data=data) if response.status_code == 200: print("Collection created successfully.") else: print(f"Failed to create collection. Status code: {response.status_code}") ``` 上述代码片段展示了如何利用 `requests.request()` 发送一个 `MKCOL` 请求来创建集合资源。 #### 下载大文件时的分段处理 当涉及较大的文件传输时,可以采用分段下载的方式减少内存占用并提高可靠性。以下是使用 `curl` 命令进行分段下载的一个例子: ```bash curl -r 0-100 -o part1.jpg http://www.example.com/image.jpg curl -r 101-200 -o part2.jpg http://www.example.com/image.jpg curl -r 201- -o part3.jpg http://www.example.com/image.jpg cat part*.jpg > full_image.jpg ``` 此方法能够有效分割大型文件到多个部分后再重新组合成完整的文件[^3]。 #### Apache Http Server 支持情况 Apache HTTP Server 提供对 WebDAV 的良好支持,可以从官方存档站点获取最新版本用于部署环境中的服务端配置需求[^2]。安装完成后需启用 mod_dav 和 mod_dav_fs 模块以激活 WebDAV 功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值