c# webDav上传文件到服务器

此文这也是实际工作中的应用。之前有写通过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; //正确返回
        }


你可能感兴趣的:(上传文件,WebDAV,HttpWebRequest,iis虚拟目录)