59 votes

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

Considérons la nécessité de renvoyer à l'appelant un fichier en texte clair à partir d'une méthode de contrôleur. L'idée est que le fichier soit téléchargé, plutôt que d'être affiché en clair dans le navigateur.

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

J'aimerais rechercher une mise en œuvre "plus correcte" de cette méthode, car je ne suis pas à 100 % à l'aise avec la méthode de l'utilisateur final. void type de retour.

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();
}

132voto

tvanfosson Points 268301

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

public ActionResult ViewHL7( int id )
{
    ...

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

6voto

Chris Missal Points 3325

Vous voudrez renvoyer un FileContentResult de votre méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X