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

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

2012-03-16 17:20 831 查看

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

最近做一个项目,合作方使用了IIS作为文件服务器.

合作方给我们配置了相关信息:

一个http ULR,用户名,密码;告诉我们只要通过HTTP就可以实现文件上传

由于合作方的服务器我们是操作不了的..仅仅知道是IIS作服务器;

找了很多资料费了九牛二虎之力才知道如果通过IIS来上传文件.特写下来备忘.

搜索了很久没有找到很多相关的资料,最后在微软的网站看到一篇英文的文章,自己再慢慢测试.终于解决.

主要是利用了HTTP1.1协议支持的PUT/DELETE 操作.平时我们常见的只是GET或者POST ..

具体操作见下面:

IIS配置服务器:

1.在IIS中新建立个站点,(详细操作略过)

2.右键站点=>属性=>主目录=>把"写入"勾上

3.在"IISweb服务扩展" ,把 "WEBDAV"允许了(我由于没的选上这个,测试了半天都不行)

4.站点的目录中,把EVERYONE配置为可完全操作(为了安全,你可以只允许某个用户完全控制;等一会用这个用户来上传/删除)

在C#中上传文件:

代码如下:


publicvoid 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=
newbyte[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();


}

注:当上传是返回 远程服务器返回错误: (409) 冲突。错误时请注意,是由于服务器上不存在上传文件设定的目录,而webclient不会自动创建文件夹所导致。手工创建对应的文件夹即可。(http://topic.csdn.net/u/20110307/11/947f934a-6ecc-4be1-a4b8-64612cc648db.html)

转自:/article/5200477.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: