J'ai cette méthode pour transférer des fichiers via un serveur FTP:FTP en C# retournant le fichier corrompu, pourquoi?
private void TransferNeededFiles(IEnumerable<string> filenames)
{
foreach (var filename in filenames)
{
var request = WebRequest.Create(new Uri(@"ftp://{0}/{1}".Fill(Config.ServerUri, filename))) as FtpWebRequest;
if (request != null)
{
request.Credentials = new NetworkCredential(Config.Username, Config.Password);
request.Method = WebRequestMethods.Ftp.DownloadFile;
using (var streamReader = new StreamReader(request.GetResponse().GetResponseStream()))
{
var fileStream = new FileStream(@"{0}/{1}".Fill(Config.DestinationFolderPath, filename), FileMode.Create);
var writer = new StreamWriter(fileStream);
writer.Write(streamReader.ReadToEnd());
writer.Flush();
writer.Close();
fileStream.Close();
}
}
}
}
Un fichier .gz, inclus dans la liste des noms de fichiers, est toujours corrompu. Lorsque j'essaie de copier à partir de ftp en utilisant Windows Explorer, le fichier n'est pas corrompu. Savez-vous ce qui se passe?
Etes-vous sûr d'utiliser le transfert binaire et non ASCII? –
J'utilise ce code ci-dessus. Je ne spécifie ni ascii ni binaire, cela pourrait-il être le problème? –
Vérifiez également UseBinary http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.usebinary.aspx. –