将文件上传到ftp会在文件末尾添加不需要的(垃圾)字符

本文关键字:文件 不需要 添加 垃圾 字符 ftp | 更新日期: 2023-09-27 18:29:19

我尝试做的是将XML文档保存到流中,对其进行修改并在ftp上保存一个文件。但在文件结尾的所有这些步骤之后,我得到了垃圾字符,比如㼼浸敶獲潩㵮ㄢ...问题出在哪里?

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

将文件上传到ftp会在文件末尾添加不需要的(垃圾)字符

据我所见,您上传了两次文档。首先对流执行xmlD.Save(),这将以原始编码保存文档,然后使用系统默认编码编写从同一文档获得的字节数组。我怀疑,如果你只是做一些类似的事情;

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

它会起作用的。

编辑:我看到@dasblinkenlight在问题的评论中添加了一些工作代码的链接,你可能想看看如何处理回复。

我用来通过FTP上传文件的代码大致相同,但没有行

ftpWReqUpload.ContentLength = fileContents.Length;

MSDN说你不应该在代码中使用它。尝试不使用它。