windows server 2003开启webDAV服务

1、 启动“IIS管理器”选择“WEB服务扩展”,选择“WEBDAV”的允许按钮启动WEBDAV功能

2、建立一个虚拟目录,对应到一个本地目录。

3、启动系统“服务”中的“WebClient”服务

参考网址

WebDAV文档rfc2518    http://www.ietf.org/rfc/rfc2518.txt

webdav常用方法和概念总结   http://blog.csdn.net/mahongming/archive/2007/09/10/1779033.aspx

在C#中通过webdav操作exchange    http://www.cnblogs.com/umlchina/archive/2005/04/25/144768.html

//--------------WebDAV上传代码-----

private void upload()

{
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://10.57.144.2/WebDAV/IMS對外教育訓練PPTnew.pdf");
           
req.Credentials = new NetworkCredential("username",
"password");//用户名,密码   //CredentialCache.DefaultCredentials使用默认的认证
            req.PreAuthenticate = true;
            req.Method = "PUT";
            req.AllowWriteStreamBuffering = true;

// Retrieve request stream
            Stream reqStream = req.GetRequestStream();

// Open the local file
            FileStream rdr = new FileStream("C://IMS對外教育訓練PPTnew.pdf", FileMode.Open);

// Allocate byte buffer to hold file contents
            byte[] inData = new byte[4096];

// loop through the local file reading each data block
            //  and writing to the request stream buffer
            int bytesRead = rdr.Read(inData, 0, inData.Length);
            while (bytesRead > 0)
            {
                reqStream.Write(inData, 0, bytesRead);
                bytesRead = rdr.Read(inData, 0, inData.Length);
            }

rdr.Close();
            reqStream.Close();

req.GetResponse();

//也可以用以下的方式

/*  System.Uri myURi = new System.Uri("http://10.57.144.2/WebDAV/hello.doc");
              FileStream inStream = File.OpenRead("C://timeTest.doc"); 
 
            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);
              byte[] inData = new byte[4096];
              int bytesRead = inStream.Read(inData, 0, inData.Length);
              while (bytesRead > 0)
              {
                  outStream.Write(inData, 0, bytesRead);
                  bytesRead = inStream.Read(inData, 0, inData.Length);
              }
              inStream.Close();
              outStream.Close();
              req.GetResponse();*/

}

//--------------WebDAV下载代码-----

private void WebDAVGet_Click(object sender, EventArgs e)
        {
            System.Uri myURi = new System.Uri(@"http://10.57.144.2/WebDAV/hello.doc");
            string sfilePath = "C://hello.doc";

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

byte[] inData = new byte[4096];
            int bytesRead = inStream.Read(inData, 0, inData.Length);
            while (bytesRead > 0)
            {
                fs.Write(inData, 0, bytesRead);
                bytesRead = inStream.Read(inData, 0, inData.Length);
            }

fs.Close();

inStream.Close();
        }

//--------------WebDAV删除代码-----

private void WebDAVDel_Click(object sender, EventArgs e)
        {
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"http://10.57.144.2/WebDAV/Powerpoint.pptx");
            //req.Credentials = new NetworkCredential("Administrator", "123456");
            req.PreAuthenticate = true;
            req.Method = "DELETE";
            //req.AllowWriteStreamBuffering = true;

req.GetResponse();
        }

//--------------WebDAV列出文件夹文件列表代码-----

private void WebDAVList_Click(object sender, EventArgs e)
        {
            
            try
            {

MSXML2.XMLHTTP30 oXMLHttp = new MSXML2.XMLHTTP30();    //需要增加Microsoft.XML 6.0  COM

String sUrl = "http://10.57.144.2/WebDAV/";

string strXml;
                strXml = "<?xml version=/"1.0/"?> ";
                strXml += "<d:propfind xmlns:d=/"DAV:/" xmlns:o=/"urn:schemas-microsoft-com:office:office/">";
                strXml += "<d:prop>";
                strXml += "<d:displayname/>";       //名称
                strXml += "<d:getcontentlength/>";    //大小
                strXml += "<d:iscollection/>";     //是否文件夹
                strXml += "<d:getlastmodified/>";   //最后修改时间
                strXml += "</d:prop>";
                strXml += "</d:propfind>";

/*strXml = "<?xml version=/"1.0/" encoding=/"utf-8/" ?>";
                strXml += "<D:propfind xmlns:D=/"DAV:/">";
                strXml += "<D:allprop/>";     //列出所有的属性
                strXml += "</D:propfind>";*/

oXMLHttp.open("PROPFIND", sUrl, false, "administrator", "drm.123");

oXMLHttp.setRequestHeader("Content-Type", "text/xml");
                oXMLHttp.setRequestHeader("Translate", "f");

//Console.WriteLine(sQuery.Length);
                Console.WriteLine(strXml);
                oXMLHttp.send(strXml);

Console.WriteLine(oXMLHttp.status);
                Console.WriteLine(oXMLHttp.statusText);
                File.WriteAllBytes(@"C:/list.xml", Encoding.UTF8.GetBytes(oXMLHttp.responseText));

//对返回的xml文件进行解析,取出所需属性
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(oXMLHttp.responseText);

XmlNode root = doc.DocumentElement;
                System.Collections.IEnumerator ienum = root.GetEnumerator();
                XmlNode book;
                while (ienum.MoveNext())
                {
                    book = (XmlNode)ienum.Current;
                    book = book.ChildNodes[1].ChildNodes[1];
                    System.Collections.IEnumerator ienum2 = book.GetEnumerator();
                    while (ienum2.MoveNext())
                    {
                        XmlNode node = (XmlNode)ienum2.Current;
                        Console.Write(node.InnerXml);
                        Console.Write("-");
                    }
                    //Console.WriteLine(book.OuterXml);
                    //Console.WriteLine(book.InnerXml);
                    Console.WriteLine();
                }

}
            catch (Exception ex)
            {
                Console.WriteLine("{0} Exception caught.", ex);
            }

}

//----新建文件夾----

private void WebDAVNewFolder_Click(object sender, EventArgs e)
        {
            try
            {
                // Create the HttpWebRequest object.
                HttpWebRequest objRequest = (HttpWebRequest)HttpWebRequest.Create(@"http://10.57.144.2/WebDAV/new");
                // Add the network credentials to the request.
                objRequest.Credentials = new NetworkCredential("F3226142", "drm.123");//用户名,密码
                // Specify the method.
                objRequest.Method = "MKCOL";

HttpWebResponse objResponse = (System.Net.HttpWebResponse)objRequest.GetResponse();

// Close the HttpWebResponse object.
                objResponse.Close();

}
            catch (Exception ex)
            {
                throw new Exception("Can't create the foder" + ex.ToString());
            }            
        }

webDAV服务的开启以及客户端的上传、下载、删除、新建文件夾、列表的代码(C#)的更多相关文章

  1. 配置允许匿名用户登录访问vsftpd服务,进行文档的上传下载、文档的新建删除等操作

    centos7环境下 临时关闭防火墙 #systemctl stop firewalld 临时关闭selinux #setenforce 0 安装ftp服务 #yum install vsftpd - ...

  2. Android连接socket服务器上传下载多个文件

    android连接socket服务器上传下载多个文件1.socket服务端SocketServer.java public class SocketServer { ;// 端口号,必须与客户端一致 ...

  3. Python 一键上传下载&一键提交文件到SVN入基线工具

    一键上传下载&一键提交文件到SVN入基线工具   by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用说明 1   注: 根据我司项目规则订制的一套工具,集成以下功能,源码 ...

  4. 使用C#WebClient类访问(上传/下载/删除/列出文件目录)由IIS搭建的http文件服务器

    前言 为什么要写这边博文呢?其实,就是使用C#WebClient类访问由IIS搭建的http文件服务器的问题花了我足足两天的时间,因此,有必要写下自己所学到的,同时,也能让广大的博友学习学习一下. 本 ...

  5. Struts2 文件上传,下载,删除

    本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用Fi ...

  6. java 通过sftp服务器上传下载删除文件

    最近做了一个sftp服务器文件下载的功能,mark一下: 首先是一个SftpClientUtil 类,封装了对sftp服务器文件上传.下载.删除的方法 import java.io.File; imp ...

  7. 使用C#WebClient类访问(上传/下载/删除/列出文件目录)

    在使用WebClient类之前,必须先引用System.Net命名空间,文件下载.上传与删除的都是使用异步编程,也可以使用同步编程, 这里以异步编程为例: 1)文件下载: static void Ma ...

  8. java FTP 上传下载删除文件

    在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...

  9. SpringMVC ajax技术无刷新文件上传下载删除示例

    参考 Spring MVC中上传文件实例 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传 Spring MVC 文件上传下载 (FileOperateUtil.ja ...

随机推荐

  1. 10个最好的 jQuery 视频插件

    在这篇文章中已经收集了10个最佳的jQuery视频插件,帮助开发人员容易地实现网站播放影片功能.可以显示视频和视频播放列表. 1. Bigvideo.js BigVideo.js 是一个jQuery插 ...

  2. STL sort 函数实现详解 ZZ

    前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不对劲,知道自己回答错了.这几天特意看了一下,在 ...

  3. Mac下进行基于java服务端语言的微信公众号本地js-sdk调试的大致方法

    开发微信公众号应用调用js-sdk,需要先在微信公众号后台配置可信域名,之后从微信的入口地址重定向到改域名下的路径后便会返回code,之后可以拿到一系列需要的参数等等.那么本地开发,如果使用的是PHP ...

  4. setw()函数使用

    在C++中,setw(int n)用来控制输出间隔.例如:cout<<'s'<<setw(8)<<'a'<<endl;则在屏幕显示s        a  ...

  5. Linux上安装Bugzilla4.4小记

    因项目需要,我受命在一台Linux服务器上搭建一个Bugzilla,进过一天的调试,这项任务总算完成了.现在可以肯定的说,安装过程不复杂,基本就是解压,填参数,执行命令.Bugzilla要跑起来,本机 ...

  6. js正则表达式/replace替换变量方法

    转自:http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html 1. javascript 正则对象替换创建和用法:/patter ...

  7. Python访问MongoDB数据库

    #encoding: utf-8 __author__ = 'Administrator' #import pymongo from pymongo import MongoClient,GEO2D ...

  8. linux time 命令详解

    用途说明time命令常用于测量一个命令的运行时间,注意不是用来显示和修改系统时间的(这是date命令干的事情).但是今天我通过查看time命令的手册页,发现它能做的不仅仅是测量运行时间,还可以测量内存 ...

  9. 【死磕Java并发】-----深入分析synchronized的实现原理

    记得刚刚開始学习Java的时候.一遇到多线程情况就是synchronized.相对于当时的我们来说synchronized是这么的奇妙而又强大,那个时候我们赋予它一个名字"同步". ...

  10. 选择合适的Linux版本

    以下纯属个人想法:欢迎指正 1.Linux桌面系统,首选Ubuntu.当然Ubuntu也有服务器版本,不建议使用 2.服务端的Linux稳定的服务器系统,在企业中从事运维工作Redhat或者CentO ...