2017-10-13 7 views
0

Ceci est le chemin que je suis en train de télécharger sur le serveur ftp:C# Télécharger pour FTP avec pas créé directorys sur le serveur ftp

_ftp: // serveur ftp/produits/productxx/versionxx/releasexx/livraison /data.zip

le problème est que les dossiers "productxx/versionxx/releasexx/livraison /" n'existent pas sur le serveur.
Puis-je les créer automatiquement en téléchargeant le fichier .zip dans C#

Mon codage au moment est:

   FtpWebRequest request = 
        (FtpWebRequest)WebRequest.Create(pathToFtp); 
       // Method set to UploadFile 
       request.Method = WebRequestMethods.Ftp.UploadFile; 
       // set password and username 
       request.Credentials = new NetworkCredential(UserName, Password); 
       // write MemoryStream in ftpStream 
       using (Stream ftpStream = request.GetRequestStream()) 
       { 
        memoryStream.CopyTo(ftpStream); 
       } 

Je reçois le System.Net.WebException: "Impossible de se connecter FTP: (553) nom de fichier non autorisé "à" en utilisant (flux ftpStream = request.GetRequestStream()) "

mais si mon pathToFtp est _ftp: //ftp-server/products/data.zip ça marche bien

Répondre

1

L'une des méthodes de demande disponibles est WebRequestMethods.Ftp.MakeDirectory. Vous devriez pouvoir l'utiliser pour faire ce que vous voulez.

Quelque chose comme ça (même si je ne l'ai pas testé), devrait faire l'affaire:

async Task CreateDirectory(string path) 
{ 
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(path); 
    request.Method = WebRequestMethods.Ftp.MakeDirectory; 

    using (var response = (FtpWebResponse)(await request.GetResponseAsync())) 
    { 
     Console.WriteLine($"Created: {path}"); 
    } 
} 

Il a répondu plus en détail ici How do I create a directory on ftp server using C#?

+0

merci, il donne pas une sorcière méthode créer la répertoire directement si n'existe pas IAM droite? – ARX

+1

Il existe des méthodes de requête 'WebRequestMethods.Ftp.ListDirectory' et' WebRequestMethods.Ftp.ListDirectoryDetails' qui pourraient vous aider. Vous pouvez simplement essayer de créer le répertoire indépendamment et gérer la réponse. Pour autant que je sache, il n'y a pas de commande "créer si n'existe pas". –

+0

À quoi sert d'utiliser 'wait request.GetResponseAsync()'? Utilisez 'request.GetResponse()' directement. –