Ruby base64到C#base64
问题描述:
我正在编写一个Ruby/Rhomobile应用程序,该应用程序将图像编码为base64,并将其作为更大XML的一部分发送给服务器(即在ASP.NET上运行C#)。Ruby base64到C#base64
但是,一旦我尝试解码base64并将其保存到硬盘上,则生成的文件不能用作图像。
下面是相关的Ruby代码:
image_element = REXML::Element.new("image")
image_element.text = Base64.encode64(open(Rho::RhoApplication::get_blob_path(self.image_uri)) { |io| io.read })
form_element.add_element(image_element)
这里是我的C#代码:
var doc = new XmlDocument();
doc.LoadXml(Server.UrlDecode(Request.Form[0]));
var imageBase64 = doc.SelectNodes("//image")[0];
var imageBytes = imageBase64.InnerText;
using(var imgWriter = new FileStream(@"c:\img.jpg",FileMode.Create))
{
imgWriter.Write(imageBytes,0,imageBytes.Length);
}
答
我会调查你对Server.UrlDecode电话。看起来这可能会破坏你的数据。
看起来像“+”号是特别关注的,每this SO question。 Server.UrlDecode使用HttpServerUtility.UrlDecode和here's the documentation for it。
是客户端图像文件绝对是JPEG? – 2011-12-28 14:46:47
@AdamRalph是的,绝对是一个JPEG。 – Svarog 2011-12-28 15:32:48
是生成的服务器端文件的大小与原始客户端文件的大小相同吗? – 2011-12-28 17:17:07