web-dev-qa-db-fra.com

ASP.NET MVC: renvoi d'un fichier texte en clair à télécharger à partir de la méthode du contrôleur

Considérez la nécessité de renvoyer un fichier texte brut à partir d'une méthode de contrôleur à l'appelant. L'idée est de télécharger le fichier plutôt que de le visualiser en texte brut dans le navigateur.

J'ai la méthode suivante, et cela fonctionne comme prévu. Le fichier est présenté au navigateur pour téléchargement et le fichier est rempli avec la chaîne.

Je voudrais rechercher une implémentation "plus correcte" de cette méthode, car je ne suis pas à 100% à l'aise avec le type de retour void.

public void ViewHL7(int id)
{
    string someLongTextForDownload = "ABC123";

    Response.Clear(); 
    Response.ContentType = "text/plain";
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.hl7", id.ToString()));
    Response.Write(someLongTextForDownload);
    Response.End();
}
59
p.campbell

Utilisez la méthode File sur la classe de contrôleur pour renvoyer un FileResult

public ActionResult ViewHL7( int id )
{
    ...

    return File( Encoding.UTF8.GetBytes( someLongTextForDownLoad ),
                 "text/plain",
                  string.Format( "{0}.hl7", id ) );
}
130
tvanfosson

Vous voudrez renvoyer un FileContentResult de votre méthode.

6
Chris Missal