J'essaie d'utiliser FTP pour ajouter des lignes de texte à un fichier .txt stocké sur un serveur Web. Il se connecte et ajoute le texte, mais pour une raison quelconque, il est corrompu et affiche comme des caractères aléatoires (symboles, chinois, etc). Voici mon code:Pourquoi FtpWebRequest corrige-t-il le texte ajouté à un fichier?
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();
Pour essayer de débogage, je me suis converti « données » à partir d'un octet [] dans une chaîne en utilisant ce 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();
}
Voici ce que la méthode ci-dessus est revenu, un md5 chaîne de hachage comme prévu:
E904B52B435BF0E1DA8D4CE6EC47E45A
C'est ce même var 'data', joint à mon dossier via FTP, a fini comme:
ө⮵孃跚䟬嫤
J'ai même essayé, juste au cas où il y avait un problème d'encodage:
string dataString = BytesToString(data);
bytes[] newBytes = Encoding.ASCII.GetBytes(dataString);
ne fonctionne pas. Quelqu'un sait ce que je fais mal ici?
Essayez d'encoder les données en octets se référer à https://blogs.msdn.microsoft.com/csharpfaq/2006/10/09/how-do-i-calculate-a-md5-hash-from-a-string/ – jackotonye
Le fichier du serveur FTP est-il enregistré sous le nom "ASCII"? –
Le fichier ASCII peut difficilement contenir '04'. Quel encodage utilise le fichier? –