URL编码Base64编码文件数据

问题描述:

我想在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); 

任何帮助,将不胜感激,谢谢。

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