* Stream 和 byte[] 之间的转换

* Stream 和 byte[] 之间的转换
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// 将 Stream 转成 byte[]
/// </summary>
public byte[] StreamToBytes(Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
/// <summary>
/// 将 byte[] 转成 Stream
/// </summary>
public Stream BytesToStream(byte[] bytes)
{
Stream stream = new MemoryStream(bytes);
return stream;
}

/* - - - - - - - - - - - - - - - - - - - - - - - -
* Stream 和 文件之间的转换
* - - - - - - - - - - - - - - - - - - - - - - - */
/// <summary>
/// 将 Stream 写入文件
/// </summary>
public void StreamToFile(Stream stream,string fileName)
{
// 把 Stream 转换成 byte[]
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
// 设置当前流的位置为流的开始
stream.Seek(0, SeekOrigin.Begin);
// 把 byte[] 写入文件
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(bytes);
bw.Close();
fs.Close();
}
/// <summary>
/// 从文件读取 Stream
/// </summary>
public Stream FileToStream(string fileName)
{
// 打开文件
FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
// 读取文件的 byte[]
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, bytes.Length);
fileStream.Close();
// 把 byte[] 转换成 Stream
Stream stream = new MemoryStream(bytes);
return stream;
}  

 

 

 

C#中结合Post发送的Stream与Byte Array的操作似乎资料很少.下面是我这几天的研究成果.功能是将同文件夹下的a.jpg复制生成b.jpg.代码如下:

byteArray.aspx.cs

 

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. sing System;   
  2. using System.IO;   
  3. using System.Data;  
  4. using System.Drawing;   
  5. using System.Drawing.Imaging;  
  6. using System.Net;   
  7. /*@  
  8. Author:frank  
  9. Site:www.2solo.cn  
  10. Date:2008.02.20 
  11. Info:C#复制图片,流与byteArray的应用,生成图片部分 
  12. */  
  13. namespace bArray {   
  14.    public partial class imgHandler : System.Web.UI.Page   
  15.      {   
  16.         protected void Page_Load(object sender, EventArgs e)   
  17.          {   
  18.             try   
  19.             {   
  20.                 Stream sin = Page.Request.InputStream;   
  21.                 System.Drawing.Image img = System.Drawing.Bitmap.FromStream(sin);   
  22.                 Bitmap bmp = new Bitmap(img);   
  23.                 MemoryStream bmpStream = new MemoryStream();   
  24.                 bmp.Save(bmpStream, System.Drawing.Imaging.ImageFormat.Jpeg);   
  25.                 FileStream fs = new FileStream(System.Web.HttpContext.Current.Server.MapPath("b.jpg"), FileMode.Create);   
  26.                 bmpStream.WriteTo(fs);   
  27.                 bmpStream.Close();   
  28.                 fs.Close();   
  29.                 bmpStream.Dispose();   
  30.                 fs.Dispose();   
  31.                 Response.Write("成功");   
  32.             }   
  33.             catch   
  34.             {   
  35.                 Response.Write("失败");   
  36.             }   
  37.         }   
  38.     }   
  39. }    
 

 

gopost.aspx.cs

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. using System;   
  2. using System.IO;   
  3. using System.Drawing;   
  4. using System.Drawing.Imaging;  
  5. using System.Net;   
  6. using System.Text;   
  7. /*@  
  8. Author:frank  
  9. Site:www.2solo.cn  
  10. Date:2008.02.20  
  11. info:C#复制图片,流与byteArray的应用,提交图片部分  
  12. */   
  13. namespace gopost   
  14. {   
  15.     public partial class postHandler : System.Web.UI.Page   
  16.     {    
  17.        protected void Page_Load(object sender, EventArgs e)   
  18.         {    
  19.            postImage();   
  20.         }    
  21.        private void postImage()   
  22.         {   
  23.             try   
  24.             {   
  25.                 HttpWebRequest request;   
  26.                 string imgUrl = System.Web.HttpContext.Current.Server.MapPath("a.jpg");   
  27.                 request = (HttpWebRequest)HttpWebRequest.Create(http://localhost/byteArray/byteArray.aspx);    
  28.                 request.KeepAlive = true;   
  29.                 request.Method = "POST";   
  30.                 byte[] byteArray = CvtImgBArr((System.Drawing.Image)new Bitmap(@imgUrl), ImageFormat.Jpeg);   
  31.                 request.ContentType = "image/JPEG";   
  32.                 request.ContentLength = byteArray.Length;  
  33.                 Stream newStream = request.GetRequestStream();  
  34.                 newStream.Write(byteArray, 0, byteArray.Length);   
  35.                 newStream.Close();   
  36.                 Response.Write("复制图片成功");   
  37.             }   
  38.             catch   
  39.             {   
  40.                 Response.Write("复制图片失败");   
  41.             }   
  42.         }   
  43.         private static byte[] CvtImgBArr(System.Drawing.Image imageToConvert, ImageFormat formatOfImage)   
  44.         {   
  45.             byte[] imArr;   
  46.             try   
  47.             {   
  48.                 using (MemoryStream myms = new MemoryStream())   
  49.                 {   
  50.                     imageToConvert.Save(myms, formatOfImage);   
  51.                     imArr = myms.ToArray();   
  52.                 }   
  53.             }   
  54.             catch (Exception) { throw; }   
  55.             return imArr;   
  56.         }   
  57.     }   
  58. }  
posted @ 2011-11-19 12:49  dayang  Views(168)  Comments(0)    收藏  举报