2012-03-29 4 views
2

Was ich versuche zu tun, speichert XML-Dokument zu streamen, ändern und speichern Sie eine Datei auf ftp. Aber nach all diesen Schritten am Ende der Datei bekomme ich Trash-Zeichen wie 㼼 浸  敶 獲 潩 㵮 Where ... Wo ist das Problem?Das Hochladen der Datei in ftp fügt unerwünschte (unbrauchbare) Zeichen am Ende dieser Datei hinzu.

XmlDocument xmlD = (XmlDocument)xmlDocument.Clone(); 
byte[] fileContents = Encoding.Default.GetBytes(xmlD.OuterXml); 
//ftpWReqUpload - FtpWebRequest to upload file 
Stream requestStream = ftpWReqUpload.GetRequestStream(); 
xmlD.Save(requestStream); 
ftpWReqUpload.ContentLength = fileContents.Length; 
requestStream.Write(fileContents, 0, fileContents.Length); 
requestStream.Close(); 
+0

Werfen Sie einen Blick auf [diese Antwort] (http://Stackoverflow.com/a/8495303/335858), es zeigt die Technik mit einem Dateistream als Quelle, aber ich bin mir sicher, dass es für angenommen werden kann Ihre Zwecke. – dasblinkenlight

Antwort

1

Von dem, was ich sehe, laden Sie das Dokument zweimal hoch. Zuerst tun Sie xmlD.Save() an den Stream, der Ihr Dokument in seiner ursprünglichen Codierung speichert, dann schreiben Sie ein Byte-Array, das Sie aus dem gleichen Dokument mit der Systemstandardcodierung erhalten haben. Ich vermute, wenn du einfach so etwas machst;

XmlDocument xmlD = xmlDocument as XmlDocument; 
Stream requestStream = ftpWReqUpload.GetRequestStream(); 
xmlD.Save(requestStream); 
requestStream.Close(); 

wird es funktionieren.

Bearbeiten: Ich sehe @dasblinkenlight einen Link zu einigen Arbeitscode zu den Kommentaren zu der Frage hinzugefügt, möchten Sie vielleicht einen Blick darauf werfen, um eine Idee, wie die Antwort zu behandeln.

+0

Arbeitete! Danke, Mann :) – Paul

0

Der Code, den ich eine Datei über FTP hochzuladen bin mit annähernd gleich ist, aber es hat nicht die Linie

ftpWReqUpload.ContentLength = fileContents.Length; 

MSDN sagt, dass Sie nicht in Ihrem Code verwenden sollten. Versuche es ohne es.

+0

Leider hat es nicht funktioniert – Paul