mysql使用blob存储base64格式文件

mysql使用blob存储base64格式文件,第1张

1.MySQL有四种BLOB类型:

·tinyblob:仅255个字符

·blob:最大限制到65K字节

·mediumblob:限制到16M字节

·longblob:可达4GB

2.mybatis对应mysql blob的类型

byte[] imgbytes对应了mysql imgbytes blob类型

3.将base64转成二进制的byte数组。直接就可存储到mysql中

// <summary>

/// 将图片数据转换为Base64字符串

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void ToBase64(object sender, EventArgs e)

{

Image img = this.pictureBox.Image

BinaryFormatter binFormatter = new BinaryFormatter()

MemoryStream memStream = new MemoryStream()

binFormatter.Serialize(memStream, img)

byte[] bytes = memStream.GetBuffer()

string base64 = Convert.ToBase64String(bytes)

this.richTextBox.Text = base64

}

/// <summary>

/// 将Base64字符串转换为图片

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void ToImage(object sender, EventArgs e)

{

string base64 = this.richTextBox.Text

byte[] bytes = Convert.FromBase64String(base64)

MemoryStream memStream = new MemoryStream(bytes)

BinaryFormatter binFormatter = new BinaryFormatter()

Image img = (Image)binFormatter.Deserialize(memStream)

this.pictureBox.Image = img

}

将图片转换为二进制字符,存入数据库中

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的一个标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。

在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它不仅在末尾去掉填充的'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“/”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6763802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存