Руби от base64 до C # base64 - PullRequest
       8

Руби от base64 до C # base64

2 голосов
/ 28 декабря 2011

Я пишу приложение Ruby / Rhomobile, которое берет изображение, кодирует его в base64 и отправляет на сервер (который работает на C # в ASP.NET), как часть большего XML.

Однако, как только я пытаюсь декодировать base64 и сохранить его на жесткий диск, полученный файл не работает как изображение.

Вот соответствующий код рубина:

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);
}

1 Ответ

1 голос
/ 28 декабря 2011

Я бы расследовал ваш звонок на Server.UrlDecode.Похоже, что это может повредить ваши данные.

Похоже, что знак "+" имеет особое значение, для этот вопрос SO .Server.UrlDecode использует HttpServerUtility.UrlDecode, и вот документация для него .

...