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

原创 2007年09月17日 15:01:00
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

 

相关文章推荐

C# 中将自定义的structure转换为byte[] 及Stream 和 byte[] 之间的转换(文件流的应用)

在Socket编程中经常会碰到将Struct转换为byte数组进行传送的情况. 如果服务器和客户端都是自己开发的话, 用序列化和反序列化当然会比较简单, 但序列化后会数据里会包含一些额外的数据,如:程...

java IO 流Stream 序列化Serializable 文件File

一、什么是流 二、流的分类 三、流结构介绍 四、常用流类介绍 五、Serializable 六、面试题...

java IO 流Stream 序列化Serializable 文件File

一、什么是流  流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。  流具有方向性,至于是输入流还是输...

PDF文件中交叉引用流对象(cross-reference stream)的解析方法

PDF文件中交叉引用流对象(cross-reference stream)的解析方法   1 介绍 在PDF-1.5版本[1]之前,对象的交叉引用信息是存储在交叉引用表(cross-refere...

Java Stream(流)、file(文件)和IO

Java.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。 一个流可以理解为一个数据...

【Java学习笔记】18.Java 流(Stream)、文件(File)和IO

1。Java的File类 1.File的构造方法File(String pathname);//把一个路径名称封装成File对象 File(String parent, String child);...

Java 流Stream、文件File和I/O

Java.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。输入流InputStream表示从一个源读取数据,输出流OutputStream表示向一个目标写数据。 读...

Java 流(Stream)、文件(File)和IO

Java.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。 一个流可以理解为...
  • zoomyj
  • zoomyj
  • 2016年01月25日 08:51
  • 184

WCF教程--使用流Stream进行文件的上传下载

在wpf项目中,区分客户端和服务端,需要2端进行数据同步和文件传输。 wcf 文件上传的例子网上很多,我也是借鉴别人的示例。wcf 文件下载的示例网上就很少了,不知道是不是因为两者的处理方式比较...

JAVA学习记录(三)——Java 流(Stream)、文件(File)和IO

简介 读取控制台输入 从控制台读取多字符输入 从控制台读取字符串 控制台输出 读写文件 FileInputStream 创建 FileOutputStream 构建 实例 扩展 ByteArrayIn...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何把stream文件流转化为文件?
举报原因:
原因补充:

(最多只允许输入30个字)