【发布时间】:2017-07-13 05:04:13
【问题描述】:
我要求用户上传一张图片,可以是任何图片格式。
我将 base64 数据以及文件名传递给我的 .Net 控制器(从中我可以获取扩展名)。
然后我将该 base64 字符串转换为图像。
public static Image Base64ToImage(string base64String)
{
// Convert base 64 string to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
// Convert byte[] to Image
using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
{
Image image = Image.FromStream(ms, true);
return image;
}
}
我收到一个错误:
输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符
我认为是因为base54字符串有:
"data:image/jpeg;base64,/9j/4AAQSkZJRgABA ...." 开头。
所以我需要剪掉“data:image/jpeg;base64”,然后保存?当我要删除有关文件类型的数据时,是否需要在其他地方指定它?
我发现的所有示例似乎都没有从前面修剪任何内容。他们只是保存字符串。我猜,我这边的东西正在添加那个标题?
【问题讨论】:
-
只需删除
data:image/jpeg;base64,,您可以在将图像保存到文件系统时指定类型。 -
谢谢。图像正在发送到数据库(因此,稍后将转换为 byte[])。我是否需要将文件类型保存到数据库中,这样当我读回它时,我知道要读回它的格式?
-
为什么不想将
base64保存为 blob? -
这听起来是个好主意。我可以将 base64 保存为 VarBinary 吗?我还需要修剪 jpeg 标题吗?