2

より大きな XML の一部として、画像を受け取り、それを base64 でエンコードし、サーバー (ASP.NET で C# を実行している) に送信する Ruby/Rhomobile アプリケーションを作成しています。

ただし、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);
}
4

1 に答える 1

1

Server.UrlDecode への呼び出しを調査します。データが破損する可能性があるようです。

この SO questionに従って、「+」記号が特に懸念されるようです。Server.UrlDecode は HttpServerUtility.UrlDecode を使用します。これに関するドキュメントは次のとおりです。

于 2011-12-28T14:52:02.897 に答える