Ich versuche, FTP zu verwenden Textzeilen in eine TXT-Datei auf einem Webserver gespeichert hinzuzufügen. Es verbindet und hängt den Text an, aber aus irgendeinem Grund ist es beschädigt und wird als zufällige Zeichen angezeigt (Symbole, Chinesisch usw.). Hier ist mein Code:Warum verdirbt FtpWebRequest Text, der auf eine Datei angehängt wird?
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();
Um zu versuchen, zu debuggen, ich konvertierte ‚Daten‘ aus einem byte [] in eine Zeichenkette mit diesem Code:
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();
}
Hier ist, was die obigen Verfahren zurückgegeben wird, ein mD5-Hash-String als erwartet:
E904B52B435BF0E1DA8D4CE6EC47E45A
Dies ist, was die gleiche 'data' var, um meine Datei über FTP angehängt, endete als:
ө⮵孃跚䟬嫤
ich dies auch versucht haben, nur für den Fall gab es eine Codierung Problem:
string dataString = BytesToString(data);
bytes[] newBytes = Encoding.ASCII.GetBytes(dataString);
Hat nicht funktioniert. Wer weiß, was ich hier falsch mache?
versuchen, die Daten in Bytes https://blogs.msdn.microsoft.com/csharpfaq/2006/10/09/how-do-i-calculate-a-md5-hash-from-a-string beziehen kodieren/ – jackotonye
Ist die Datei im FTP-Server als 'ASCII' gespeichert? –
Ascii-Datei kann kaum "04" enthalten. Welche Codierung verwendet die Datei? –