使用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 = "PUT";

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();

代码仅供参考,其中有一些简化,可能也包含错误。