使用IIS作文件服务,使用C#实现上传删除

最近做一个项目,合作方使用了IIS作为文件服务器.
合作方给我们配置了相关信息:
一个http ULR,用户名,密码;告诉我们只要通过HTTP就可以实现文件上传
由于合作方的服务器我们是操作不了的..仅仅知道是IIS作服务器;
找了很多资料费了九牛二虎之力才知道如果通过IIS来上传文件.特写下来备忘.

搜索了很久没有找到很多相关的资料,最后在微软的网站看到一篇英文的文章,自己再慢慢测试.终于解决.
主要是利用了HTTP1.1协议支持的PUT/DELETE 操作.平时我们常见的只是GET或者POST ..

具体操作见下面:
IIS配置服务器:
1.在IIS中新建立个站点,(详细操作略过)
2.右键站点=>属性=>主目录=>把"写入"勾上
3.在"IISweb服务扩展" ,把 "WEBDAV"允许了(我由于没的选上这个,测试了半天都不行)
4.站点的目录中,把EVERYONE配置为可完全操作(为了安全,你可以只允许某个用户完全控制;等一会用这个用户来上传/删除)

在C#中上传文件:
代码如下:

public void UploadFileBinary(string localFile, string uploadUrl)
    
{
        HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(uploadUrl);
        req.Credentials 
= new NetworkCredential("Administrator""123456");//用户名,密码
        req.PreAuthenticate 
= true;
        req.Method 
= "PUT";
        req.AllowWriteStreamBuffering 
= true;

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

        
// Open the local file
        FileStream rdr = new FileStream(localFile, 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();
    }

删除文件的代码 :

 public void DeleteFile(string uploadUrl)
    
{
        HttpWebRequest req 
= (HttpWebRequest)WebRequest.Create(uploadUrl);
        req.Credentials 
= new NetworkCredential("Administrator""123456");
        req.PreAuthenticate 
= true;
        req.Method 
= "DELETE";
        
//req.AllowWriteStreamBuffering = true;

        req.GetResponse();
    }
posted @ 2007-12-31 13:41    阅读(1106)  评论(0编辑  收藏  举报