A partire da .NET 6, le classi HttpWebRequest, FtpWebRequest e le loro collegate sono state deprecate e per nuovi progetti ne è sconsigliato l'utilizzo. Mentre la classe HttpWebRequest è stata sostituita da HttpClient, FtpWebRequest non ha visto e non vedrà lo sviluppo di una nuova controparte moderna all'interno di .NET. Nella documentazione, Microsoft consiglia anzi l'adozione di librerie di terze parti. In questo script vedremo come utilizzare la libreria FluentFTP per effettuare l'upload di un file, mentre nei prossimi script ci occuperemo di altri task come il download e l'enumerazione del contenuto di una cartella.
Per utilizzare FluentFTP, dobbiamo innanzitutto installare l'omonimo package da NuGet e poi creare un'istanza della classe FtpClient passando al costruttore parametri come l'indirizzo IP o l'url, la porta, username e password (se necessari). Una volta ottenuta l'istanza, dobbiamo invocare il metodo AutoConnectAsync per stabilire la connessione al server. A questo punto possiamo effettuare l'upload di un file invocando il metodo UploadFileAsync passando in input il percorso del file sul client e il percorso sul server comprensivo del nome del file.
using var client = new FtpClient("1.1.1.1", "username", "pwd");
await client.AutoConnectAsync();
await client.UploadFileAsync(@"C:\MyFile.txt", "/myfolder/myfile.txt");La libreria offre anche overload per specificare cosa fare se il file esiste già sul server, se creare la cartella sul server nel caso non esista e un callback per tracciare lo stato di avanzamento dell'upload.
Se invece del file fisico abbiamo a disposizione uno stream o un array di byte, possiamo usare i metodi UploadStreamAsync o UploadByteArrayAsync che supportano gli stessi parametri visti nell'esempio sopra con l'eccezione della sorgente che non è il percorso del file, ma un'istanza dello stream o dell'array di byte.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ridurre il reflow cambiando il CSS
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Rendere le variabili read-only in una pipeline di Azure DevOps
Raggruppare risorse in .NET Aspire
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Eliminare record doppi in Sql Server
Analizzare il contenuto di una issue con GitHub Models e AI
Recuperare gli audit log in Azure DevOps
Utilizzare Intersect e Except per filtrare set di dati in TSql
Arricchire l'interfaccia di .NET Aspire
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Configurare e gestire sidecar container in Azure App Service


