Si j'utilise System.Net.FtpWebRequest
pour télécharger un fichier sur un serveur vsftpd, dois-je utiliser GetResponse pour vérifier si le fichier a été téléchargé correctement? Ou est-ce que j'obtiens une exception pour chaque erreur? Que dois-je vérifier dans System.Net.FtpWebResponse
?Comment vérifier FtpWebRequest pour les erreurs
Répondre
Ouais, vous voulez saisir l'objet FtpWebResponse de l'objet de la demande ... comme ceci:
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
request.Method = WebRequestMethods.Ftp.UploadFile;
FtpWebResponse response = (FtpWebResponse) request.GetResponse();
request.KeepAlive = false;
byte[] fileraw = File.ReadAllBytes("CompleteLocalPath");
try
{
Stream reqStream = request.GetRequestStream();
reqStream.Write(fileraw, 0, fileraw.Length);
reqStream.Close();
}
catch (Exception e)
{
response = (FtpWebResponse) request.GetResponse();
// Do something with response.StatusCode
response.Close();
}
Vous voulez vérifier Ftp.WebResponse.StatusCode.
Il y a un bon nombre de membres dans StatusCode qui peuvent être retournés, donc vérifier par rapport à cela peut être difficile.
Voici une liste des codes/descriptions qui pourraient être retournés:
EDIT: Si quelque chose va mal avec un transfert, il doit lancer une exception lorsque vous lancez un écrivain de flux. Ce que vous pouvez faire est d'emballer un try-catch autour de tout cela, et si quelque chose ne va pas, vous serez en mesure d'obtenir le code d'état et l'imprimer sur n'importe quel support que vous utilisez pour voir quel est le problème spécifique. J'ai modifié le code ci-dessus pour refléter tout cela (en utilisant un seul moyen de transfert, vous pouvez utiliser le vôtre).
Que dois-je vérifier dans FtpWebResponse? Fournit différents serveurs FTP différents résultats? Quels résultats peuvent alors donner vsftpd? – magol
Est-il correct de vérifier si FtpStatusCode est inférieur à 300? – magol