我有一个MySql备份文件,其中包含如下所示的列:
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`profilepicture` blob,
)此行配置文件的内容在备份文件中编码为某种转储,开始(在文本编辑器中)如下所示:
INSERT INTO `tbox_account_transaction` VALUES (8,'?\?\?0JFIF\0\0\0\0\0\0[...]'); 如何在c#中从.sql备份文件中解码此文件?它不是Base64,但我不知道它还可能是什么。我不想将backup.sql文件恢复到MySql,而是从备份文件中解码blob。
发布于 2018-01-24 08:28:48
您看到的字节几乎肯定是JPEG图像的初始字节。从第五个字节开始的可读字符串"JFIF“就是线索(参见https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format)。
许多其他二进制字节是null或其他不可打印的字符。所有奇怪的\?或\0序列都是客户端在文本显示上表示这些字节的最大努力。
访问此数据的最简单方法是将转储文件恢复到MySQL实例(甚至是在笔记本电脑上运行的本地实例),然后在C#代码中使用SQL来访问profilepicture blob的二进制内容。
要么像@Tommaso Belluzzo建议的那样将数据从一个blob保存到.jpg文件,要么直接显示它,如果可以的话。我不是C#程序员,但似乎有一个Bitmap类可以做到这一点(请参阅https://msdn.microsoft.com/en-us/library/8tda2c3c(v=vs.85).aspx。
提供如何在C#应用程序中编写SQL的教程超出了Stack Overflow解答的范围。有很多资源可以用来做到这一点。
发布于 2018-01-24 07:12:48
这看起来像一个jpg文件头。尝试执行以下操作(blob是一个包含profilepicture的String类型变量):
using (MemoryStream stream = new MemoryStream(buffer))
{
Image image = Image.FromStream(stream, true, true);
image.Save("C:\\Test.jpg", ImageFormat.Jpeg);
}https://stackoverflow.com/questions/48411765
复制相似问题