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 fopen
和fread
函数打开文件并读取其字节。您只使用网址。您需要下载它,或打开,如果它是一个本地文件,第一:
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);
MapServerPath + [File.ReadAllBytes](http://msdn.microsoft.com/en-us/library/system.io。 file.readallbytes.aspx)可能更贴近'fopen' /'fread'。并且需要在某处使用长度。 – 2013-04-27 01:44:29
由于问题中提到的数据是“http://url.com/image.jpg”,我认为这将从另一台计算机运行,而不是图像存储位置;如果这是不正确的,那么'ReadAllBytes'是读取它的好方法。 C#代码不需要你指定文件的长度就可以做任何你在做的事情;即使它在PHP中发挥作用,我们也不需要在这里的任何地方使用它。 – 2013-04-27 01:47:18
+1。你是对的 - 我没有算上括号...... - 不需要长度。 – 2013-04-27 03:41:46