如何把stream文件流转化为文件?

CSDN首页新闻论坛小组Blog文档下载读书Tag网摘搜索.NETJava游戏视频人才外包第二书店程序员

如何把stream文件流转化为文件?

楼主charlay(磊) 2005-10-24 14:44:15 在 .NET技术 / C# 提问

按照httpWebRequest和httpWebResponse来获得服务器上的文件,该如何把stream文件流转换成文件呢?例如是dll文件的话?! 问题点数:50、回复次数:13Top

src="/Include/Board.htm?Tags=" frameborder="0" scrolling="no">

1 楼charlay(磊)回复于 2005-10-24 14:46:42 得分 0

急等!Top

2 楼xiaomatian(趴趴熊◎%#……※×)回复于 2005-10-24 15:08:36 得分 40

这个问题很简单的啊.有一个方法叫SaveStreamToFile,就是把流保存成指定的文件的.  
  具体说明如下:  
  public   static   void   SaveStreamToFile(  
        Stream   inputStream,  
        string   path  
  );  
  Top

3 楼charlay(磊)回复于 2005-10-24 16:40:09 得分 0

private   void   Form1_Load(object   sender,   System.EventArgs   e)  
  {  
      WebRequest   request   =   null;  
      WebResponse   response   =   null;  
   
      request   =   WebRequest.Create("http://community.csdn.net/images/CSDN_logo.GIF");            
      response   =request.GetResponse();  
      Stream   stream   =   response.GetResponseStream();  
   
      MetaData.SaveStreamToFile(stream,@"e://CSDN_logo.GIF");  
  }  
   
  我试着从csdn服务器端下载一个logo.gif文件保存到e盘根目录,结果是文件有了,和原始文件大小也一样,可是内容不对,图片不能正常打开!望高手解答!Top

4 楼charlay(磊)回复于 2005-10-24 17:14:50 得分 0

急等!Top

5 楼xiaomatian(趴趴熊◎%#……※×)回复于 2005-10-24 17:18:51 得分 0

其实你想做下载的话你还是用webclient类来做吧,用webclient类的downloadfile方法来获取.  
  string   remoteUri   =   "http://community.csdn.net/images/";  
  string   fileName   =   "CSDN_logo.GIF",    
  string   myStringWebResource   =   null;  
  WebClient   myWebClient   =   new   WebClient();  
  myStringWebResource   =   remoteUri   +   fileName;  
  myWebClient.DownloadFile(myStringWebResource,fileName);                  
  这样就把你的那个文件保存到了你的exe文件夹下了.Top

6 楼charlay(磊)回复于 2005-10-24 17:23:08 得分 0

谢谢,其实我开始也用过这个的,但是由于中间设计到一个代理服务器的问题,所以只能转用WebRequest和WebResponse了。Top

7 楼xiaomatian(趴趴熊◎%#……※×)回复于 2005-10-24 17:26:14 得分 0

以上代码刚刚在控制台程序下测试通过.  
  Top

8 楼charlay(磊)回复于 2005-10-24 17:34:43 得分 0

这个小软件要求可以通过代理服务器访问Internet,所以没有使用WebClient。  
  xiaomatian你指我的代码可以正确执行?文件下载下来也能正常打开?Top

9 楼navy_koo(平湖秋水)回复于 2005-10-24 17:43:00 得分 5

 
      request   =   WebRequest.Create("http://community.csdn.net/images/CSDN_logo.GIF");            
      response   =request.GetResponse();  
      Stream   stream   =   response.GetResponseStream();  
   
      这种方法是不行的。  
      原因是:   默认情况下Response输出的是Html响应流,也就是说其中包括了一些html元素;  
  所以这个问题关系到服务端怎么响应Response或者说怎么写Response,Response也是有类型的即ContentType。客户端只能接受。  
       
      所以,一般往客户端写文件会用  
  Response.AddHeader("Content-Disposition",   "attachment;   filename="   +   file.Name);  
  Response.AddHeader("Content-Length",   file.Length.ToString());  
  Response.ContentType   =   "application/octet-stream";  
  Response.WriteFile(file.FullName);  
   
  输出图片也有很详细的ContentType  
  Response.ContentType   =   "image/JPEG";  
  Response.ContentType   =   "image/BMP";  
  。。。  
     
  Top

10 楼xiaomatian(趴趴熊◎%#……※×)回复于 2005-10-24 18:05:46 得分 0

呵呵.根据你的要求刚刚在控制台下写了一个webrequest的下载文件的.  
  调试通过.  
  Console.WriteLine("Hello   World!");  
  WebRequest   wreq=WebRequest.Create("http://community.csdn.net/images/CSDN_logo.GIF");  
  WebResponse   wresp=wreq.GetResponse();  
  Stream   respStream=wresp.GetResponseStream();  
  int   length=(int)wresp.ContentLength;  
  BinaryReader   br=new   BinaryReader(respStream);  
  FileStream   fs;  
  fs   =   File.Create("M://csdn.gif");  
  fs.Write(br.ReadBytes(length),   0,   length);  
   
  br.Close();  
  fs.Close();  
  Console.WriteLine("DownLoad   Success!!");Top

11 楼xiaomatian(趴趴熊◎%#……※×)回复于 2005-10-24 18:06:44 得分 0

以上代码下载的那个gif图片可以打开.Top

12 楼xiaomatian(趴趴熊◎%#……※×)回复于 2005-10-24 18:30:26 得分 0

不是说的代码可以运行,我是我写用webclient写的那个可以运行.上面那个是用你要求的来写的,已经测试通过,可以打开,你再修改一下就可以了!Top

13 楼holym(小雨)回复于 2005-10-24 19:40:48 得分 5

public   void   download(string   file)  
  {  
  string   file   =   Server.MapPath(file);  
  if   (file   ==   null)  
  {  
        Response.Write("参数错误!");  
        return;  
    }  
  if   (File.Exists(file))  
    {  
          Response.ContentType   =   "application/octet-stream";  
          Response.AddHeader("Content-Disposition",   "attachment;FileName="+Server.UrlEncode(Path.GetFileName(file)));  
          Response.WriteFile(file);  
          Response.End();  
    }  
  else  
    {  
        Response.Write("文件不存在!");  
    }  
  }Top

相关问题

 
北京百联美达美数码科技有限公司  版权所有  京 ICP 证 020026 号
Copyright © 2000-2006, CSDN.NET, All Rights Reserved
<script src="http://www.csdn.net/common/counter.js" type="text/javascript"></script> id="myframe" border="0" name="myframe" src="http://www.csdn.net/ggmm/dd333.htm" frameborder="no" width="0" scrolling="no" height="0"> <script src="/u/ui/scripts/jsframework.js" type="text/javascript"></script> <script type="text/javascript">/**/</script> <script src="http://www230.clickeye.cn/common/clickeye.js" type="text/javascript"></script> <script src="http://www230.clickeye.cn/creative/v4/all.js" charset="gb2312" type="text/javascript"></script> <script src="http://www104.clickeye.cn/extractor.js?domain=topic.csdn.net" charset="gb2312" type="text/javascript"></script> <script src="http://www104.clickeye.cn/js.js?address=http%3A%2F%2Ftopic.csdn.net%2Ft%2F20051024%2F14%2F4346528.html" charset="gb2312" type="text/javascript"></script>
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值