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
Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
Sfruttare lo streaming di una chiamata Http da Blazor
Gestire liste di tipi semplici con Entity Framework Core
Migrare una service connection a workload identity federation in Azure DevOps
Configurare policy CORS in Azure Container Apps
Come migrare da una form non tipizzata a una form tipizzata in Angular
Effettuare delete massive con Entity Framework Core 7
Le novità di Angular: i miglioramenti alla CLI
Evitare la script injection nelle GitHub Actions
Implementare l'infinite scroll con QuickGrid in Blazor Server
Reactive form tipizzati con FormBuilder in Angular
Eseguire attività con Azure Container Jobs