web-dev-qa-db-fra.com

Client FTP dans le noyau .net

Puis-je télécharger des fichiers/listes de fichiers via le protocole FTP à l’aide de netcoreapp1.0 ?

Je sais que je peux utiliser FtpWebRequest ou FluentFTP si je cible plein .net45 framework. 

Ma solution, cependant, est basée sur la norme 1.6 .net et je ne souhaite pas prendre en charge la structure complète uniquement pour le protocole FTP.

9
Sergei Rudakov

FluentFTP prend désormais en charge .NET Core/.NET Standard 1.6. Si vous rencontrez des problèmes, veuillez ajouter un problème dans l'outil de suivi des problèmes et nous y travaillerons.

6
Robinicks

FtpWebRequest est maintenant inclus dans .NET Standard 2.0

La bibliothèque FluentFTP est également compatible avec la dernière norme .net 2.0.

5
Sergei Rudakov

Il n'y a pas de fonctionnalités FTP prêtes à l'emploi pour netcoreapp1.0 ou netstandard1.6. FtpWebRequest retournera dans netstandard2.0.

5
vcsjones

FtpWebRequest est maintenant pris en charge dans .NET Core 2.0. Voir GitHub repo

Exemple d'utilisation:

public static byte[] MakeRequest(
    string method, 
    string uri, 
    string username, 
    string password, 
    byte[] requestBody = null)
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
    request.Credentials = new NetworkCredential(username, password);
    request.Method = method;
    //Other request settings (e.g. UsePassive, EnableSsl, Timeout set here)

    if (requestBody != null)
    {
        using (MemoryStream requestMemStream = new MemoryStream(requestBody))
        using (Stream requestStream = request.GetRequestStream())
        {
            requestMemStream.CopyTo(requestStream);
        }
    }

    using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
    using (MemoryStream responseBody = new MemoryStream())
    {
        response.GetResponseStream().CopyTo(responseBody);
        return responseBody.ToArray();
    }
}

Où la valeur du paramètre method est définie en tant que membre de System.Net.WebRequestMethods.Ftp.

Voir aussi Exemples FTP

2
CalC

Vous pouvez essayer d'utiliser FtpWebRequest method.

Échantillon:

public static byte[] DownloadFile(string url, string filePath, string user, string password)
        {
            var ftpServerUrl = string.Concat(url, filePath);
            var request = (FtpWebRequest) WebRequest.Create(ftpServerUrl);
            request.Method = WebRequestMethods.Ftp.DownloadFile;

            request.Credentials = new NetworkCredential(user,password);
            using (var response = (FtpWebResponse) request.GetResponse())
            using (var responseStream = response.GetResponseStream())
            using (var memoryStream = new MemoryStream())
            {
                responseStream?.CopyTo(memoryStream);
                return memoryStream.ToArray();
            }
        }

Gardez à l'esprit que le ftpServerUrl doit être un chemin URI valide contenant le chemin du fichier. c'est à dire. ftpServerUrl = ftp //: ftp.server/targetfile.txt

1
George Kargakis