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.
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.
FtpWebRequest est maintenant inclus dans .NET Standard 2.0
La bibliothèque FluentFTP est également compatible avec la dernière norme .net 2.0.
Il n'y a pas de fonctionnalités FTP prêtes à l'emploi pour netcoreapp1.0 ou netstandard1.6. FtpWebRequest
retournera dans netstandard2.0.
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
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