为什么FtpWebRequest会破坏附加到文件的文本?

时间:2017-10-21 01:50:14

标签: c# networking ftp upload corrupt

我正在尝试使用FTP将文本行添加到存储在Web服务器上的.txt文件中。它连接并附加文本,但由于某种原因它已损坏并显示为随机字符(符号,中文等)。这是我的代码:

numpy as np

为了尝试调试,我使用以下代码将'data'从byte []转换回字符串:

byte[] data = md5Encryptor.ComputeHash(Encoding.ASCII.GetBytes(dataString));

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpAddress + "file.txt");
request.Method = WebRequestMethods.Ftp.AppendFile;
request.ContentLength = data.Length;
request.Credentials = ftpCredentials;

Stream requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
response.Close();

以上是上述方法返回的内容,md5哈希字符串如预期的那样:

public static string BytesToString(byte[] data)
{
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < data.Length; i++)
    {
        sb.Append(data[i].ToString("X2"));
    }

    return sb.ToString();
}

这是通过FTP附加到我的文件中的相同'data'var,结果为:

E904B52B435BF0E1DA8D4CE6EC47E45A

我甚至试过这个,以防有编码问题:

ө⮵孃跚䟬嫤

没用。谁知道我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

原来,.txt被编码为Unicode而不是ASCII。维基百科说ASCII是默认的,但是如果你打开“另存为”的话。菜单,你可以检查。一旦我使用Encoding.Unicode保存,它就可以正常工作。