xmlドキュメントをアップロードできるファイルアップロードコントロールがあります。アップロードXML - >ユニコードストリームを読み込んでそれを変換する
XMLファイルは、Unicode形式でエンコードされます。私はそれらをUTF8に変換したいので、適切なxmlファイルとしてレンダリングすることができます。
アップロードされたファイルを非表示フィールドに16進数の文字列として保存し、ジェネリックハンドラに送信します。私が望むのは、私がXMLを作成できるという結果です。
if (fileUpload.PostedFile.ContentType == "text/xml")
{
Stream inputstream = fileUpload.PostedFile.InputStream;
byte[] streamAsBytes = (ConvertStreamToByteArray(inputstream));
string stringToSend = BitConverter.ToString(streamAsBytes);
xmlstream.Value = stringToSend;
sendXML.Visible = true;
infoLabel.Text = "<b>Selected XML: </b>" + fileUpload.PostedFile.FileName;
}
handler.ashx:
if (HttpContext.Current.Request.Form["xmldata"] != null)
{
HttpContext.Current.Response.ContentType = "text/xml";
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
string xmlstring = HttpContext.Current.Request.Form["xmldata"];
byte[] data = xmlstring.Split('-').Select(b => Convert.ToByte(b, 16)).ToArray();
string complete = System.Text.ASCIIEncoding.ASCII.GetString(data);
XmlDocument doc = new XmlDocument();
doc.LoadXml(complete);
HttpContext.Current.Response.Write(doc.InnerXml);
}
おかげ代わり
<?xml version="1.0".. etc
コードの
"??<\0?\0x\0m\0l\0 \0v\0e\0r\0s\0i\0o\0n\0=\0\"\01\0.\00\0\"\0 \0e\0n\0c\0o\0d\0i\0n\0g\0=\0\"\0I\0S\0O\0-
:現時点では私の文字列は次のようになります!
入力いただきありがとうございます。ストリームをテキスト文字列に変換する方法を教えてください。私はStreamReaderで試しましたが、うまく動作しませんでした。ありがとう。 Btw;私はまだ上記のコードで同じ問題が発生します:/限り、XMLエンコーディングタグに関する限り、私はそれを変更することを忘れてしまった。私はファイルを生成するので、常に同じであることがわかります。 – Johan
@Johan:なぜあなたはそれをしたいですか?ストリームはどこにありますか?あなたはどんな種類のテキストを好きですか?たとえば、バイトを保存するには、基本的にはバイト配列に変換し、 'Convert.ToBase64String'を使用する必要があります。 –
基本的な考え方は、XMLファイルを保存せずにアップロードすることです。>ストリームを読み込みます。>ストリームを一時的に隠しフィールドに文字列形式で保存します。> jquery ajaxを使用してhiddenfieldのコンテンツをハンドラに送ります。 XMLを作成し、それをレスポンスとして生成します。 – Johan