La maggior parte delle volte le Web API vengono implementate per scambiare informazioni in formato JSON, XML o di un qualsiasi altro formatter che avete implementato nel vostro programma.
Capita anche spesso però che una parte di questo scambio sia anche un file.
Dare quindi la possibilità al vostro “chiamante” sia di scaricare un file, sia quella di fare l’upload.
La differenza fra ASP.NET e ASP.NET Core è minima, ma vediamo come potete implementarla velocemente con questo esempio di codice che trovate alla fine dell’articolo.
Innanzitutto il vostro controller potete farlo derivare dalla classe ControllerBase invece di quella di default in cui c’è tutta la parte di MVC che al momento non vi interessa.
Per recuperare un file dal vostro server sicuramente dovete fare una chiamata in Get e, nell’esempio, gli dovete passare un nome del file.
Molto semplicemente dovete recuperare lo stream di byte del vostro file da file system o da un blob storage o in qualsiasi altro posto abbiate deciso di archiviare i file.
A questo punto come tipo di ritorno della vostra funzione potete usare File che accetta come parametri il vostro memory stream appena caricato e il MimeType dello stesso.
Per recuperare il MimeType in base all’estensione del file, potete usare un pacchetto NuGet chiamato MediaTypeMap che è praticamente un dizionario di tutti i MimeType.
Potete trovare le informazioni di questo pacchetto qua: https://www.nuget.org/packages/MediaTypeMap
La parte di upload è relativamente semplice come quella di download.
In ASP.NET Core esiste un tipo di parametro nuovo in ingresso che si chiama IFormFile che permette appunto di fare upload di file.
Questo oggetto ha un metodo che si chiama CopyToAsync che potete usare per recuperare lo stream del file appena inviato e copiarlo su file system oppure, come per il download, con il metodo di archiviazione che avete implementato nella vostra applicazione.
Conclusioni
Avete visto come con poche righe di codice, potete implementare con Web API un semplice Download e Upload di file.
Sicuramente una base da cui partire per le vostre applicazioni.
Se ti è piaciuto questo articolo e vuoi approfondirlo, puoi acquistare il corso presente sul mio sito che puoi trovare qua.
You might also like
More from Sviluppo
Fare debug da Visual Studio con i browser in incognito
Di default, quando facciamo debug di applicazioni web, Visual Studio lancia una nuova finestra del browser che utilizza, ovviamente, cache, …
Disabilitare il footer nei Communication site di Office 365
Da un po' di tempo a questa parte Microsoft, by default, rilasce diverse features già abilitate su alcuni template di …
Sviluppare una CLI cross-platform con .NET Core
Negli ultimi anni c'è stato un ritorno di fiamma per i tool da riga di comando. Siamo passati da applicazioni …