FTP client in .NET Core

前端 未结 5 1047
不知归路
不知归路 2021-01-08 01:09

Can I download file / list files via FTP protocol using netcoreapp1.0?

I know, I can use FtpWebRequest or FluentFTP if I target full .net45

相关标签:
5条回答
  • 2021-01-08 01:33

    FluentFTP now supports .NET core / .NET standard 1.6. If you run into problems please add an issue in the issue tracker and we'll work on it.

    0 讨论(0)
  • 2021-01-08 01:40

    FtpWebRequest is now supported in .NET Core 2.0. See GitHub repo

    Example usage:

    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();
        }
    }
    

    Where the value for the method parameter is set as a member of System.Net.WebRequestMethods.Ftp.

    See also FTP Examples

    0 讨论(0)
  • 2021-01-08 01:43

    FtpWebRequest is now included to .NET Standard 2.0

    FluentFTP library is also compatible with latest .net standard 2.0

    0 讨论(0)
  • 2021-01-08 01:49

    You can try using FtpWebRequest method.

    Sample:

    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();
                }
            }
    

    Keep in mind, that the the ftpServerUrl has to be a valid uri path containing the file path. e.g. ftpServerUrl = "ftp://ftp.server/targetfile.txt"

    0 讨论(0)
  • 2021-01-08 01:50

    There are no FTP capabilities out-of-the-box for netcoreapp1.0 or netstandard1.6. FtpWebRequest will return in netstandard2.0.

    0 讨论(0)
提交回复
热议问题