我正在使用Sencha Touch在iPad上捕获用户的数据。这包括标准表格(姓名,电子邮件等)以及客户的签名(请参阅插件here)。
基本上,插件从用户的签名中获取坐标,并返回Base64 PNG数据。
一旦我有签名数据,我想存储它。我的两个问题是:
我应该将Base64数据存储在我的 (MySQL)数据库以及其余部分 用户的信息,或应该 我创建一个静态文件并链接为 必要?
如果存放在 数据库是要走的路,有什么数据 我应该使用哪种类型?
答案 0 :(得分:6)
无需对图像进行base64编码。 MySQL完全能够存储二进制数据。只需确保使用'blob'字段类型,而不是'text'。文本字段受字符集转换的影响,这可能会丢弃.png数据。 blob字段未翻译。
同样,base64编码会将文本大小增加大约35%,因此您将浪费大量空间而无需任何好处。
但是,将图像存储在数据库中通常是个坏主意。你确实拥有图像永远“正确”的优势,但是在备份时可以实现绝对巨大的转储,以及尝试将图像输出并显示在应用程序/网页中的各种乐趣。
最好将它外部存储在以记录主键命名的文件中,以便于访问/验证。
答案 1 :(得分:2)
Blob将存储Base64。它将为您提供所需的一切。将其存储在数据库中可以为您提供内置的关系功能,如果将其存储在静态文件中,则必须自行编码。希望这可以帮助。祝你好运先生。
编辑:关于二进制v。base 64
的标记是正确的答案 2 :(得分:2)
只需在BLOB字段中保存文件即可。如果你进行一些优化(灰度或B / W),这样的PNG文件不应该大于1KB。
在DB之外存储文件似乎很容易,但有些事情需要考虑:
答案 3 :(得分:0)
将字段设置为Blob数据类型,它可以完美存储base64EncodedString