[英]System.FormatException: 'Invalid length for a Base-64 char array or string.'
[英]MVC Convert Base64 String to Image, but … System.FormatException
我的控制器在此代碼中的請求對象中獲取上傳的圖像:
[HttpPost]
public string Upload()
{
string fileName = Request.Form["FileName"];
string description = Request.Form["Description"];
string image = Request.Form["Image"];
return fileName;
}
image的值(至少在它的開頭)看起來很像這樣:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEAYABgAAD/7gAOQWRvYmUAZAAAAAAB/...
我嘗試使用以下內容進行轉換:
byte[] bImage = Convert.FromBase64String(image);
但是,這會產生System.FormatException:“輸入不是有效的Base-64字符串,因為它包含非基本64個字符,兩個以上的填充字符或填充字符中的非法字符。”
我覺得問題是至少字符串的開頭不是base64,但對於我所知道的一切都不是。 在解碼之前我需要解析字符串嗎? 我錯過了完全不同的東西嗎?
看起來你可能只能從頭開始刪除"data:image/jpeg;base64,"
部分。 例如:
const string ExpectedImagePrefix = "data:image/jpeg;base64,";
...
if (image.StartsWith(ExpectedImagePrefix))
{
string base64 = image.Substring(ExpectedImagePrefix.Length);
byte[] data = Convert.FromBase64String(base64);
// Use the data
}
else
{
// Not in the expected format
}
當然你可能想要使這個特定於JPEG特定,但我會嘗試這是第一次通過。
原因確實是“data:image / jpeg; base64”,我建議使用這種方法從base64中刪除起始字符串
var base64Content = image.Split(',')[1];
byte[] bImage = Convert.FromBase64String(base64Content);
這是最短的解決方案,您不必使用魔術字符串,也不必編寫正則表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.