簡體   English   中英

MVC將Base64字符串轉換為Image,但是...... System.FormatException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM