• PDF转换成二进制字符串写入 HTTP 输出流


      最近项目需要做电子签章,需要网页打开PDF签章后保存:正好复习哈二进制和流的转换:

      文件转换成二进制字符串写入HTTP输出流

     1  protected void Page_Load(object sender, EventArgs e)
     2         {
     3             try
     4             {
     5                 string path = "Tett.PDF";           //获取文件名
     6                 path = Server.MapPath(path);        //获取物理文件路径
     7                 if (File.Exists(path) == false)
     8                     throw new Exception("找不到PDF文件");
     9                 FileStream fs = File.Open(path, FileMode.Open);
    10                 byte[] buffer = new byte[fs.Length];
    11                 fs.Read(buffer, 0, buffer.Length);
    12                 fs.Close();
    13                 Response.ContentType = "application/pdf";
    14                 Response.AddHeader("content-disposition", "filename=pdf");
    15                 Response.AddHeader("content-length", buffer.Length.ToString());
    16                 Response.BinaryWrite(buffer);
    17             }
    18             catch (Exception exp)
    19             {
    20                 throw new Exception("错误", exp);
    21             }
    22             finally
    23             {
    24                 Response.Flush();
    25                 Response.Close();
    26                 Response.End();
    27             }
    28         }
    View Code

       获取HTTP传入的实体内容保存文件

     1 string path = "Test.PDF";
     2                                 path = Server.MapPath(path);
     3                                 if (File.Exists(path) == false)
     4                                     throw new Exception("找不到PDF文件");
     5                                 using (var inputStream = Request.InputStream)
     6                                 {
     7                                     using (var flieStream = new FileStream(path, FileMode.Create))
     8                                     {
     9     //从当前流中读取所有字节并将其写入到目标流中
    10                                         inputStream.CopyTo(flieStream);
    11                                     }
    12                                 }    
    View Code

      二进制转换成图片

     1  /// <summary>
     2         /// 二进制转换成图片
     3         /// </summary>
     4         /// <param name="Bytes"></param>
     5         /// <returns></returns>
     6         public static Bitmap BytesToBitmap(byte[] Bytes)
     7         {
     8             MemoryStream stream = null;
     9             try
    10             {
    11                 stream = new MemoryStream(Bytes);
    12                 return new Bitmap((Image)new Bitmap(stream));
    13             }
    14             catch (ArgumentNullException ex)
    15             {
    16                 throw ex;
    17             }
    18             catch (ArgumentException ex)
    19             {
    20                 throw ex;
    21             }
    22             finally
    23             {
    24                 stream.Close();
    25             }
    26         }
    View Code

      图片转换成二进制  

     1 /// <summary>
     2         /// 图片转换成二进制
     3         /// </summary>
     4         /// <param name="Bitmap"></param>
     5         /// <returns></returns>
     6         public static byte[] BitmapToBytes(Bitmap Bitmap)
     7         {
     8             MemoryStream ms = null;
     9             try
    10             {
    11                 ms = new MemoryStream();
    12                 Bitmap.Save(ms, Bitmap.RawFormat);
    13                 byte[] byteImage = new Byte[ms.Length];
    14                 byteImage = ms.ToArray();
    15                 return byteImage;
    16             }
    17             catch (ArgumentNullException ex)
    18             {
    19                 throw ex;
    20             }
    21             finally
    22             {
    23                 ms.Close();
    24             }
    25         }
    View Code

      流转换成文件

     1 using (FileStream fs = new FileStream(path, FileMode.Create))
     2 {
     3     byte[] bytes = new byte[stream.Length];
     4     int numBytesRead = 0;
     5     int numBytesToRead = (int)stream.Length;
     6     stream.Position = 0;
     7     while (numBytesToRead > 0)
     8     {
     9         int n = stream.Read(bytes, numBytesRead, Math.Min(numBytesToRead, int.MaxValue));
    10         if (n <= 0)
    11         {
    12             break;
    13         }
    14         fs.Write(bytes, numBytesRead, n);
    15         numBytesRead += n;
    16         numBytesToRead -= n;
    17     }
    18     fs.Close();
    19 }
    View Code

       文件转换成流

     1 /// <summary> 
     2 /// 从文件读取 Stream 
     3 /// </summary> 
     4 public Stream FileToStream(string fileName) 
     5 {             
     6     // 打开文件 
     7     FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); 
     8     // 读取文件的 byte[] 
     9     byte[] bytes = new byte[fileStream.Length]; 
    10     fileStream.Read(bytes, 0, bytes.Length); 
    11     fileStream.Close(); 
    12     // 把 byte[] 转换成 Stream 
    13     Stream stream = new MemoryStream(bytes); 
    14     return stream; 
    15 }
    View Code

     

  • 相关阅读:
    关于信号的一些知识
    压缩感知综合理解篇
    稀疏编码之字典学习
    Iterator和for...of
    ES6中的Symbol
    原生node写一个静态资源服务器
    css中的流,元素,基本尺寸
    Node-Blog整套前后端学习记录
    mongodb 和 mongoose 初探
    Express 初步使用
  • 原文地址:https://www.cnblogs.com/xchit/p/3277661.html
Copyright © 2020-2023  润新知