用webservice实现小文件下载(转)

用程序实现文件的下载方法很多,在.net中有个webclient类可轻松实现文件的下载,但在framework精简版中却没有提供这个类,但可以利用webservice来解决.代码如下:
webservice:

 /// <summary>
 /// 下载文件
 /// </summary>
 /// <param name="FileName"></param>
 /// <returns></returns>
 [WebMethod]
 public byte[] downloadFile(string FileName)
 {
     FileStream fs = new FileStream(Server.MapPath(FileName), FileMode.Open, FileAccess.Read);
     byte[] fileData = new Byte[fs.Length];
     fs.Read(fileData, 0, (int)fs.Length);
     fs.Close();
     return fileData;
 }

客户端代码:

  localhost.PDAService ws=new WindowsApplication2.localhost.PDAService();
                                           //localhost.PDAService是webservice的代理类
  byte[] b=ws.downloadFile("VisitSys.exe");//要下载的文件
  FileStream fs=new FileStream("VisitSys.exe",FileMode.OpenOrCreate,FileAccess.Write);
  fs.Write(b,0,b.Length);
  fs.Close();
  MessageBox.Show("OK");
以上方法不适应大文件的下载,因为这是一次性把文件读入内存的.

MapPath方法的试验

状态:
1。IIS的根目录==>c:\inetpub\wwwroot
2。虚拟目录"oas"==>F:\hskama\oas
3。在http://localhost/oas/sys/others/mkm.aspx执行Response.Write(XXX)

结果:
Server.MapPath(".")              F:\hskama\oas\sys\others
Server.MapPath("~")             F:\hskama\oas
Server.MapPath("")               F:\hskama\oas\sys\others
Server.MapPath("..")             F:\hskama\oas\sys
Server.MapPath("~/..")          c:\inetpub\wwwroot

posted @ 2009-03-17 11:07  木瓜脑袋  阅读(1755)  评论(0编辑  收藏  举报