2013-02-05 52 views
-1

當我嘗試執行以下操作的代碼:Convert.FromBase64String異常

byte[] arr= Convert.FromBase64String("1/50/Zoolz/Win-s9u0uco8ea0(11)/349.jpg") 

我收到以下錯誤:

輸入不是有效的Base-64字符串,因爲它含有非鹼64個字符,多於兩個填充字符或填充字符中的非空白字符。

誰能解決它?

+2

你想做什麼? –

+1

你的字符串看起來像一個jpg文件的路徑。你想轉換什麼? –

+0

我想通過Encoding.UTF8.GetString(arr).ToLower(); –

回答

2

您沒有將base64string傳遞給該方法,而是先傳遞它的路徑,然後將該圖像轉換爲base64string,然後調用該字符串的方法。

轉換圖像到base64string

using (var fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) 
{ 
     var buffer = new byte[fs.Length]; 
     fs.Read(buffer, 0, (int)fs.Length); 
     string base64 = Convert.ToBase64String(buffer); 
} 

轉換base64string到圖像

byte[] imageBytes = Convert.FromBase64String(imgBase64String); 
MemoryStream ms1 = new MemoryStream(imageBytes); 
Image img = Image.FromStream(ms1); 
3

Convert.FromBase64String期望一個底座64編碼的字符串作爲參數,的含文件東西不是名稱被基地64編碼。

如果圖像文件內容是基地64編碼,您要高度重視首先讀取該文件,然後調用FromBase64String上的內容,如:

string baseText = File.ReadAllText(<filename>); 
byte[] imageBytes = Convert.FromBase64String(baseText); 
0

您沒有采用基地64編碼字符串,它只是一個普通的字符串。如果您嘗試創建測試,則可以使用以下代碼將字符串轉換爲base64。

string stringToBeEncoded = "some string"; 
    byte[] byteArray = System.Text.ASCIIEncoding.ASCII.GetBytes(stringToBeEncoded); 
    string base64String = System.Convert.ToBase64String(byteArray); 
+3

爲什麼人們仍然使用ASCII編碼/解碼的東西... –