J'ai eu il m'a suggéré que je devrais utiliser FileResult pour permettre aux utilisateurs de télécharger des fichiers à partir de mon Asp.Net application MVC. Mais les seuls exemples de ce que je peux trouver a toujours à voir avec les fichiers d'image (en spécifiant le type de contenu de l'image/jpeg).
Mais que faire si je ne peux pas savoir le type de fichier? Je veux que les utilisateurs puissent télécharger pratiquement n'importe quel fichier à partir de la filearea de mon site.
J'avais lu une méthode de le faire (voir un post précédent pour le code), qui fonctionne réellement bien, sauf pour une chose: le nom du fichier qui vient dans la boîte de dialogue Enregistrer sous est concaténé à partir du chemin d'accès au fichier avec des traits de soulignement (folder_folder_file.ext). Aussi, il semble que les gens pense que je devrais retourner un FileResult au lieu d'utiliser cette classe personnalisée que j'avais trouvé BinaryContentResult.
Quelqu'un sait la "bonne" façon de faire un téléchargement en MVC?
EDIT: J'ai eu la réponse (ci-dessous), mais juste pensé que je devrais poster le travail plein de code si quelqu'un d'autre est intéressé:
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;
}