WebDAV是什么
基于Web的分布式编写和版本控制(WebDAV)是超文本传输协议(HTTP)的扩展,有利于用户间协同编辑和管理存储在万维网服务器文档。WebDAV 由互联网工程任务组的工作组在 RFC 4918 中界说。许多今世操纵系统为 WebDAV 提供了内置支持。
WebDAV扩展了request方法所允许的标准HTTP谓词和HTTP头。增加的谓词包罗:
COPY将资源从一个URI复制到另一个URI
LOCK锁定一个资源。WebDAV支持共享锁和互斥锁。
MKCOL创建集合(即目录)
MOVE将资源从一个URI移动到另一个URI
PROPFIND从Web资源中检索以XML格式存储的属性。它也被重载,以允许一个检索长途系统的集合布局(也叫目录层次布局)
PROPPATCH在单个原子性动作中更改和删除资源的多个属性
UNLOCK解除资源的锁定
WebDAV 协议为用户在服务器上创建、更改和移动文档提供了一个框架。WebDAV 协议最紧张的功能包罗:
维护作者或修改日期的属性、命名空间管理、集合和覆盖掩护
维护属性包罗创建、删除和查询文件信息等
命名空间管理处理在服务器名称空间内复制和移动网页的能力
集合处理各种资源的创建、删除和罗列
覆盖掩护处理与锁定文件相干功能
由于 WebDAV 是基于 HTTP 的,以是具有 HTTP 的所有长处,包罗容易穿越防火墙、 使用 HTTPS 来传输数据,因此在很多方面可以更换 FTP。
WebDAV 可以通过 Nginx 或 Apache 等 Web 服务器部署。在客户端 WebDAV 也获得了许多软件的支持,比如 Office 就可通过 WebDAV 编辑长途文档
webdav支持哪些方法?
首先一定支持普通的HTTP1.1的一些方法:
- GET
- POST
- PUT
- DELETE
- PROPFIND
- PROPPATCH
- MKCOL
- COPY
- MOVE
- LOCK
- UNLOCK
PROPFIND 和 GET
PROPFIND 是查找资源的信息,并不包罗资源的内容。而 GET 方法是直接返回资源的具体内容。在PROPFIND中,你可以指定返回资源的哪些属性信息,也可以返回资源的所有属性信息(allprop)。
PROPPATCH
对资源的某个大概某些属性进行操纵,这个操纵可以是增加,删除,修改等。
MKCOL
就是创建Collection,Collection的意思就是文件夹,它对应一个URI路径。这个命令创建的Collection如果事先存在,大概前置的路径不存在,都会报错。
POST
POST方法的实际作用在Webdav的协议中没有做欺压界说,一样平常都是由具体的应用场景的Server进行界说的。
DELETE
DELETE 就是删除操纵,它可以删除资源,也可以删除一个Collection。但是删除资源的时间,要求被删除的资源不能有锁。
如果是删除一个Collection,要求这个Collection。
LOCK 和 UNLOCK
对一个已经存在的资源加锁大概解锁操纵。
COPY
COPY复制一个文件到目的文件夹,目的文件夹必须存在
PUT
PUT是用来更新服务器上的一个文件的,它不能作用于文件夹。
使用WebDAV来上传和下载文件
上传和下载文件,最简单的方式,应该就是直接使用SPS2003的对象模型了。但有的时间,会有一些题目:
1. SPS2003的对象模型只能本机调用。
2. 如果写一个Web应用步伐,使用匿名认证,那么没有办法传用户信息认证。即使使用Impersonate,也会没有权限(至少我没有成功)。
3. 可以自己来写Web Service,长途和认证都没有题目。上传也没有题目,但下载,似乎不那么好写了。
以是,如果可以用WebDAV,会多一种选择,也能开辟我们的思路。下面是一个上传和下载的例子:
上传:
System.Uri myURi = new System.Uri(“https://server/shared document/?var1=hello");
FileStream inStream = File.OpenRead(“c:\text.txt”);
WebRequest req = WebRequest.Create(myURi);
req.Method = " UT";
req.Timeout = System.Threading.Timeout.Infinite;
req.Credentials = CredentialCache.DefaultCredentials;
Stream outStream = req.GetRequestStream();
CopyStream(inStream, outStream);
outStream.Close();
req.GetResponse();
下载:
System.Uri myURi = new System.Uri(“https://server/share documents/text.txt”);
string sfilePath = "C:\\DownLoadedFiles\\";
sfilePath+=”test.txt”;
WebRequest req = WebRequest.Create(myURi);
req.Method = "GET";
req.Timeout = System.Threading.Timeout.Infinite;
req.Credentials = CredentialCache.DefaultCredentials;
WebResponse res = req.GetResponse();
Stream inStream = res.GetResponseStream();
FileStream fs = new FileStream(sfilePath,FileMode.OpenOrCreate);
CopyStream(inStream,fs);
inStream.Close();
代码仅供参考,此中有一些简化,可能也包罗错误。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |