Maison >développement back-end >C++ >Comment contrôler l'affichage du fichier (voir ou télécharger) dans ASP.NET MVC?

Comment contrôler l'affichage du fichier (voir ou télécharger) dans ASP.NET MVC?

Barbara Streisand
Barbara Streisandoriginal
2025-01-31 13:56:09848parcourir

How to Control File Display (View or Download) in ASP.NET MVC?

Options d'affichage de fichiers de contrôle (Afficher ou télécharger) dans ASP.NET MVC

Les applications ASP.NET MVC doivent souvent servir les fichiers stockés dans une base de données aux utilisateurs. Un défi clé consiste à fournir aux utilisateurs le contrôle de la façon dont ces fichiers sont gérés - qu'ils soient visualisés directement dans le navigateur ou téléchargés.

Bien que FileResult offre une solution simple, il peut être peu fiable pour les types de fichiers inconnus, souvent défaut en téléchargement. Pour un contrôle plus robuste, envisagez d'utiliser FileStreamResult ou de manipuler l'en-tête ContentDisposition.

L'utilisation FileStreamResult offre un compromis:

<code class="language-csharp">// Opens known types, downloads unknown types (incorrect filename/extension)
return new FileStreamResult(new MemoryStream(document.Data), document.ContentType);</code>

Pour forcer régulièrement un téléchargement, quel que soit le type de fichier, utilisez la méthode File avec un en-tête ContentDisposition personnalisé:

<code class="language-csharp">public ActionResult Download()
{
    var document = ...;
    var cd = new System.Net.Mime.ContentDisposition
    {
        FileName = document.FileName,
        Inline = false, // Forces download
    };
    Response.AppendHeader("Content-Disposition", cd.ToString());
    return File(document.Data, document.ContentType);
}</code>

Pour améliorer le support international des caractères, la classe ContentDispositionHeaderValue est recommandée:

<code class="language-csharp">public IActionResult Download()
{
    var document = ...;
    var cd = new ContentDispositionHeaderValue("attachment")
    {
        FileNameStar = document.FileName // Use FileNameStar for better encoding
    };
    Response.Headers.Add(HeaderNames.ContentDisposition, cd.ToString());
    return File(document.Data, document.ContentType);
}</code>

Ces méthodes permettent aux développeurs de gérer précisément la livraison de fichiers, assurant une expérience utilisateur cohérente et prévisible, que l'utilisateur ait l'intention d'afficher ou de télécharger le fichier.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn