byte[] mybyte = null; DataTable dt = OrderData.GetFP(txt.Text.Trim()); mybyte = (byte[])dt.Rows[0]["PDF_FILE"]; byte[] fileByte = Convert.FromBase64String(Convert.ToBase64String(mybyte)); Response.Clear(); Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}.pdf", txt.Text.Trim())); Response.BinaryWrite(mybyte); Response.Flush(); Response.End();
base64介绍:
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。
public string FileToBase64(string filename) { string result = string.Empty; try { using (FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read)) { //将图片转成64位形式的字符串 byte[] byteArray = new byte[fs.Length]; fs.Read(byteArray,0,byteArray.Length); result = Convert.ToBase64String(byteArray); } } catch { result = ""; } return result; }
调用:
static void Main(string[] args) { ImgAndBaseProject imgAndBase = new ImgAndBaseProject(); System.Console.WriteLine(imgAndBase.FileToBase64(@"C:UsersMACHENIKEsource eposImgToBaseSixFourImgToBaseSixFourGitHub.png")); }
如果把base64再转成图片
public Image Base64ToImg(string base64str) { byte[] arr = Convert.FromBase64String(base64str);//这个标黄的就与Image图片有关系了 MemoryStream ms = new MemoryStream(arr); Bitmap bmp = new Bitmap(ms); return bmp; }
完整代码如下:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } public string FileToBase64(string filename) { string result = string.Empty; try { using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) { byte[] byteArray = new byte[fs.Length]; fs.Read(byteArray, 0, byteArray.Length); result = Convert.ToBase64String(byteArray); } } catch { result = ""; } return result; } public Image Base64ToImg(string base64str) { byte[] arr = Convert.FromBase64String(base64str); MemoryStream ms = new MemoryStream(arr); Bitmap bmp = new Bitmap(ms); return bmp; } private void Form1_Load(object sender, EventArgs e) {
//先加载照片变成base64的字符串 this.richTextBox1.Text = FileToBase64(@"C:UsersMACHENIKEsource eposImgToBaseSixFourImgToBaseSixFourGitHub.png").Trim(); } private void button1_Click(object sender, EventArgs e) { //把base64的转成图片 this.pictureBox1.Image = Base64ToImg(this.richTextBox1.Text.Trim()); } }
Image和Base64互相转换
转成 Base64 形式的 System.String:
string a = "base64字符串与普通字符串互转";
byte[] b = System.Text.Encoding.Default.GetBytes(a);
//转成 Base64 形式的 System.String
a = Convert.ToBase64String(b); //YmFzZTY019a3+7Su0+vG1c2o19a3+7Suu6XXqg==
Response.Write(a);
byte[] c = Convert.FromBase64String(a);
a = System.Text.Encoding.Default.GetString(c); //base64字符串与普通字符串互转
Response.Write(a);
使用base64编码的好处