2013-04-27 149 views
0

我想在ASP.NET中將圖像url編碼爲Base64,以便開放源代碼API可以處理我的請求。事情開源端的支持團隊向我發送了來自PHP系統的這段代碼。我有問題轉換成C#等效。URL編碼Base64編碼文件數據

PHP代碼:

$data = urlencode(base64_encode(fread(fopen("/tmp/signature.jpg", "r"),  filesize("/tmp/signature.jpg")))); 

事情到目前爲止,我曾嘗試:

string data = "http://url.com/image.jpg" 
byte[] encbuff = HttpUtility.UrlEncodeToBytes(data); 
string enc = Convert.ToBase64String(encbuff); 
string urlenc = HttpUtility.UrlEncode(data); 

任何幫助,將不勝感激,謝謝。

回答

1

PHP fopenfread函數打開文件並讀取其字節。您只使用網址。您需要下載它,或打開,如果它是一個本地文件,第一:

byte[] data; 
using (var webClient = new WebClient()) 
    data = webClient.DownloadData("http://url.com/image.jpg"); 
string enc = Convert.ToBase64String(data); 
string urlenc = HttpUtility.UrlEncode(enc); 
+0

MapServerPath + [File.ReadAllBytes](http://msdn.microsoft.com/en-us/library/system.io。 file.readallbytes.aspx)可能更貼近'fopen' /'fread'。並且需要在某處使用長度。 – 2013-04-27 01:44:29

+0

由於問題中提到的數據是「http://url.com/image.jpg」,我認爲這將從另一臺計算機運行,而不是圖像存儲位置;如果這是不正確的,那麼'ReadAllBytes'是讀取它的好方法。 C#代碼不需要你指定文件的長度就可以做任何你在做的事情;即使它在PHP中發揮作用,我們也不需要在這裏的任何地方使用它。 – 2013-04-27 01:47:18

+0

+1。你是對的 - 我沒有算上括號...... - 不需要長度。 – 2013-04-27 03:41:46