关闭

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

标签: streamstring.netfilepowerpoint服务器
3826人阅读 评论(0) 收藏 举报
CSDN首页 新闻 论坛 小组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员

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

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

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

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

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:170274次
    • 积分:2354
    • 等级:
    • 排名:第16353名
    • 原创:82篇
    • 转载:22篇
    • 译文:0篇
    • 评论:10条
    最新评论