Mi è stato suggerito di utilizzare FileResult per consentire agli utenti di scaricare file dalla mia applicazione MVC Asp.Net. Ma gli unici esempi che posso trovare hanno sempre a che fare con i file di immagine (specificando il tipo di contenuto image / jpeg).
E se non sapessi il tipo di file? Voglio che gli utenti siano in grado di scaricare praticamente qualsiasi file dall'archivio del mio sito.
Avevo letto un metodo per farlo (vedi un post precedente per il codice), che funziona davvero bene, tranne una cosa: il nome del file che appare nella finestra di dialogo Salva con nome è concatenato dal percorso del file con caratteri di sottolineatura ( folder_folder_file.ext). Inoltre, sembra che la gente pensi che dovrei restituire un FileResult invece di usare questa classe personalizzata che avevo trovato BinaryContentResult.
Qualcuno conosce il modo "corretto" di fare un tale download in MVC?
EDIT: ho ricevuto la risposta (sotto), ma ho pensato di pubblicare il codice di lavoro completo se qualcun altro è interessato:
public ActionResult Download(string filePath, string fileName)
{
string fullName = Path.Combine(GetBaseDir(), filePath, fileName);
byte[] fileBytes = GetFile(fullName);
return File(
fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
byte[] GetFile(string s)
{
System.IO.FileStream fs = System.IO.File.OpenRead(s);
byte[] data = new byte[fs.Length];
int br = fs.Read(data, 0, data.Length);
if (br != fs.Length)
throw new System.IO.IOException(s);
return data;
}
Response.ContentType = MimeMapping.GetMimeMapping(filePath);
, da stackoverflow.com/a/22231074/4573839