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
Verificare la provenienza di un commit tramite le GitHub Actions
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Disabilitare automaticamente un workflow di GitHub
Miglioramenti nelle performance di Angular 16
Creare alias per tipi generici e tuple in C#
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Ordinare randomicamente una lista in C#
Usare le collection expression per inizializzare una lista di oggetti in C#
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Effettuare il binding di date in Blazor
Eseguire una query su SQL Azure tramite un workflow di GitHub