您的位置:首页 > 编程语言 > C#

c# webDav上传文件到服务器

2014-02-19 23:00 615 查看
此文这也是实际工作中的应用。之前有写通过webDAV方式取出文件的方法;这里提供通过webDav往服务器写入文件的方法;

这里假设已经搭建好了一个webDAV ,

WebDAV地址假设是:10.153.24.94/WebDavFolder/;

假设登陆的用户名是Administrator,登陆认证密码是:passWord.0 ;

假设要将本地:c:\test.dat文件上传到10.153.24.94/WebDavFolder/0/目录下;注意,在10.153.24.94/WebDavFolder/这个只是在10.153.24.94这台服务器上的IIS发布出来的地址,至于这个文件在实体路径,可以变通,可以是另外的服务器的目录;

但是一定要注意的是,一定给在IIS里面给应用池设定一致。而且要给Administrator权限,并且对文件夹的实体路径具有读写权限。否会404权限不够;

具体调用如下:

string lstrWebUrl="http://10.153.24.94/WebDavFolder/0/test.dat"; //服务器上将要存的文件名
string lstrLocalFile = "c:\\test.dat"; //原文件
string lstrUserName="Administrator";
string lstrPassword="passWord.0";

UploadWebDavFile(lstrWebUrl,lstrLocalFile,lstrUserName,lstrPassword)


方法具体实现代码:C#

protected int UploadWebDavFile(string _WebFileUrl,string _LocalFile,string _UserName,string _Password)
{
try
{
System.Net.HttpWebRequest  req = (System.Net.HttpWebRequest)WebRequest.Create(_WebFileUrl);  //Http和服务器交互
req.Credentials = new NetworkCredential(_UserName,_Password); //验证密码
req.PreAuthenticate = true;
req.Method="PUT";//采用PUT方式
req.AllowWriteStreamBuffering=true;

Stream reqStream = req.GetRequestStream();
FileStream rdm = new FileStream(_LocalFile,FileMode.Open); //打开本地文件流

byte[] inData = new byte[4096];
int byteRead = rdm.Read(inData,0,inData.Length);  //二进制读文件
while(byteRead>0)
{
reqStream.Write(inData,0,byteRead); //响应流写入
byteRead = rdm.Read(inData,0,inData.Length);
}
rdm.Close();
reqStream.Close();

req.GetResponse(); //提交
}
catch(Exception e)
{
return 0;
}
return 1; //正确返回
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: