none
Impossible de télécharger un fichier via FTP

    Discussion générale

  • Bonjour,

    J'ai un problème. J'essaie de télécharger un fichier en provenance d'un FTP AS/400. Lorsque j'utilise Filezilla, avec le même nom d'utilisateur et le même mot de passe, tous ce passe bien. Par contre, lorsque j'utilise C# et le code suivant :

    String myFile = Dts.Variables["ADORow"].Value.ToString().Trim(); String myLocalPath = "C:\local\"; String myFTPURL = @"ftp:\\GJCDEV\\PRODOC\\SCORECARD\\"; String myFTPUser = Dts.Variables["$Project::FTPUser"].Value.ToString(); String myFTPPassword = Dts.Variables["$Project::FTPPassword"].Value.ToString(); Dts.Variables["FileTimeFrom"].Value = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss.fff"); String myLocalFile = myLocalPath + @"\" + myFile; FtpWebRequest requestFileDownload = (FtpWebRequest)FtpWebRequest.Create(new Uri(myFTPURL + myFile)); requestFileDownload.Proxy = null; requestFileDownload.UsePassive = true; requestFileDownload.KeepAlive = true; requestFileDownload.UseBinary = true; requestFileDownload.Method = WebRequestMethods.Ftp.DownloadFile; requestFileDownload.Credentials = new NetworkCredential(myFTPUser, myFTPPassword); try {

    //LIGNE PROBLÉMATIQUE FtpWebResponse responseFileDownload = (FtpWebResponse)requestFileDownload.GetResponse();

    //550-Specified directory does not exist or cannot be accessed.
    //550 Working directory not changed.

    ////////////////////////

    Stream responseStream = responseFileDownload.GetResponseStream(); FileStream writeStream = new FileStream(myLocalFile, FileMode.Create); int Length = 2048; Byte[] buffer = new Byte[Length]; int bytesRead = responseStream.Read(buffer, 0, Length); while (bytesRead > 0) { writeStream.Write(buffer, 0, bytesRead); bytesRead = responseStream.Read(buffer, 0, Length); } responseStream.Close(); writeStream.Close(); Dts.Variables["FileSize"].Value = new FileInfo(myLocalFile).Length; Dts.Variables["FileTimeTo"].Value = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss.fff"); Dts.TaskResult = (int)ScriptResults.Success; } catch (WebException e) { String status = ((FtpWebResponse)e.Response).StatusDescription; Dts.TaskResult = (int)ScriptResults.Failure; }

    J'obtient toujours l'erreur suivante : 

    550-Specified directory does not exist or cannot be accessed.
    550 Working directory not changed.

    Fait intéressant, si le fichier existe déjà dans le dossier de destination C:\local\[FILENAME.TXT], ça fonctionne à merveille.

    Je m'explique. Si j'execute le code une première fois, le fichier est créé et le code plante avec le message d'erreur ci-dessus. Je redémarre le code et le fichier n'est pas créé puisqu'il est déjà présent.  Le code FTP ne plante pas.

    Je ne comprends pas pourquoi dans ce cas-là.

    Explication quelqu'un ?

    Merci,

    Daniel


    lundi 19 mars 2018 13:29

Toutes les réponses

  • Bonjour Daniel,

    Essayez de déclarer votre variable String myFTPURL comme suit: "ftp://ftp.domain.com//votredirectoire" .
    Merci de nous tenir au courant.

    Cordialement, 
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 20 mars 2018 13:10
    Modérateur
  • Salut,

    Désolé du délais. Finalement, le problème en était un de droit sur le 400.

    Merci de m'avoir répondu.

    Daniel

    lundi 7 mai 2018 13:01