C# 发送请求,返回 Stream ,下载文件

                WebRequest request = WebRequest.Create(new Uri(urlstring));
                request.Method = "Get";
                request.ContentType = "text/html;charset=UTF-8";
                var response = request.GetResponse();

                Stream rs = response.GetResponseStream();
                var ms = StreamToMemoryStream(rs);
                ms.Seek(0, SeekOrigin.Begin); 
                int buffsize = (int)ms.Length; //rs.Length 此流不支持查找,先转为MemoryStream
                byte[] bytes = new byte[buffsize];

                ms.Read(bytes, 0, buffsize);
                ms.Flush();
                rs.Flush();
                ms.Close();
                rs.Close();

                HttpContext.Current.Response.ContentType = "application/octet-stream";
                //通知浏览器下载文件而不是打开
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
                HttpContext.Current.Response.BinaryWrite(bytes);
                HttpContext.Current.Response.Flush();
                HttpContext.Current.Response.End();

  

   public MemoryStream StreamToMemoryStream(Stream instream)
        {
            MemoryStream outstream = new MemoryStream();
            const int bufferLen = 4096;
            byte[] buffer = new byte[bufferLen];
            int count = 0;
            while ((count = instream.Read(buffer, 0, bufferLen)) > 0)
            {
                outstream.Write(buffer, 0, count);
            }
            return outstream;
        }

  

// sstream  转string 
StreamReader reader = new StreamReader( stream );  
 string text = reader.ReadToEnd();  

  

猜你喜欢

转载自www.cnblogs.com/dare/p/9281621.html
今日推荐