我正在编写一个Ruby/Rhomobile应用程序,该应用程序获取图像,将其编码为base64,然后发送到服务器(在ASP.NET上运行C# ),作为更大的XML的一部分。
但是,一旦我尝试解码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);
}发布于 2011-12-28 22:52:03
我会调查你打给Server.UrlDecode的电话。看起来这可能会损坏你的数据。
根据this SO question,似乎"+“符号是特别值得关注的。Server.UrlDecode使用HttpServerUtility.UrlDecode和here's the documentation for it。
https://stackoverflow.com/questions/8657163
复制相似问题