Utilisation de FileResult dans ASP.NET MVC pour télécharger des fichiers de type inconnu
Lors de l'activation des téléchargements de fichiers dans ASP.NET MVC, il est généralement recommandé d'utiliser FileResult comme méthode préférée. Cependant, la plupart des exemples se concentrent sur le téléchargement de fichiers image avec un type de contenu spécifique (tel que « image/jpeg »).
Un problème survient si le type de fichier est inconnu et que vous souhaitez autoriser les utilisateurs à télécharger différents formats de fichiers : le nom du fichier téléchargé peut être concaténé avec des traits de soulignement du chemin du fichier, ce qui peut ne pas être idéal. De plus, certaines personnes préfèrent renvoyer un FileResult au lieu d'utiliser une classe personnalisée telle que « BinaryContentResult ».
Méthode recommandée
Afin de résoudre ces problèmes et de mettre en œuvre le mécanisme de téléchargement correct, veuillez suivre ces étapes :
Utilisez le type MIME générique de flux d'octets :
Pour les fichiers de type inconnu, spécifiez le type MIME générique "Application/Octet-Stream" pour indiquer que le fichier peut être dans n'importe quel format.
Définir l'opération de téléchargement :
Dans votre contrôleur MVC, créez une méthode d'action pour gérer le téléchargement du fichier, par exemple :
<code class="language-csharp">public FileResult Download(string filePath, string fileName) { // 从指定位置或流获取文件字节 byte[] fileBytes = GetFileBytes(filePath); // 使用指定的字节、MIME类型和文件名返回FileResult return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); }</code>
Récupérer les octets du fichier :
Implémentez une méthode qui récupère les octets du fichier en fonction d'un chemin de fichier fourni ou d'autres moyens, par exemple :
<code class="language-csharp">private byte[] GetFileBytes(string filePath) { return System.IO.File.ReadAllBytes(filePath); }</code>
Exemple de code :
Voici un exemple d'extrait de code illustrant l'approche :
<code class="language-csharp">public ActionResult Download() { byte[] fileBytes = System.IO.File.ReadAllBytes(@"c:\folder\myfile.ext"); string fileName = "myfile.ext"; return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); }</code>
Avec cette méthode, vous pouvez télécharger n'importe quel type de fichier tout en conservant le nom de fichier souhaité et en utilisant le type MIME approprié dans votre application ASP.NET MVC.
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!