ASP.NET Core Razor文件下载

原创 Laughing  2017-09-26 23:28  阅读 140 次 评论 2 条

Razor后台下载文件的方式,其实跟MVCController方式非常的类似。只需要我们搞明白在Razor中如何调用.cs文件的后台方法就可以了

Razor后台方法调用

Razor中,我们可以通过定义标签的asp-page-handler属性,定义后台调用的方法,只是我们需要注意的是,在postget方式下,后台调用的方法有些区别,post方式方法是OnPostXXX,而get方式方法是OnGetXXX,其中OnGetOnPost是系统预制的方法。

比如,我们下面的代码

  1. <form method="post">  
  2.     <button type="submit" asp-page-handler="Down" class="btn btn-success">路径下载</button>  
  3. </form>  

由于我form通过post方式提交,buttonasp-page-handler定义的方法为Down,那么这段代码调用的后台方法为OnPostDown

文件下载Demo

明白了上面的规则,我们就可以很容易的实现文件的下载功能

前台代码

  1. @page  
  2. @model IndexModel  
  3. @{  
  4.     ViewData["Title"] = "Home page";  
  5. }  
  6. <div style="margin-top:10px;">  
  7.     <form method="post">  
  8.     <button type="submit" asp-page-handler="Down" class="btn btn-success">路径下载</button>  
  9.     <br/>  
  10.     <br/>  
  11.     <button type="submit" asp-page-handler="Down1" class="btn btn-success">文件流下载</button>  
  12.     <br/>  
  13.     <br/>  
  14.     <button type="submit" asp-page-handler="Down2" class="btn btn-success">远程下载</button>  
  15.     <br/>  
  16.     <br/>  
  17.     </form>  
  18. </div>  

后台代码

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.IO;  
  4. using System.Linq;  
  5. using System.Net.Http;  
  6. using System.Threading.Tasks;  
  7. using Microsoft.AspNetCore.Mvc;  
  8. using Microsoft.AspNetCore.Mvc.RazorPages;  
  9. using static System.Net.WebRequestMethods;  
  10.   
  11. namespace Razor.Pages  
  12. {  
  13.     public class IndexModel : PageModel  
  14.     {  
  15.         public void OnGet()  
  16.         {  
  17.   
  18.         }  
  19.   
  20.         public IActionResult OnPostDown()  
  21.         {  
  22.             return File("/Files/text1.txt""application/txt""1.txt");  
  23.         }  
  24.   
  25.         public IActionResult OnPostDown1()  
  26.         {  
  27.             var filePath = Directory.GetCurrentDirectory() + "/wwwroot" + "/Files/text1.txt";  
  28.             FileStream fileStream = new FileStream(filePath, FileMode.Open);  
  29.             return File(fileStream, "application/txt""1.txt");  
  30.         }  
  31.   
  32.         public async Task<IActionResult> OnPostDown2()  
  33.         {  
  34.             HttpClient client = new HttpClient();  
  35.             var path = "http://localhost:5000/Files/text1.txt";  
  36.             client.BaseAddress = new Uri(path);  
  37.             var stream = await client.GetStreamAsync(path);  
  38.             return File(stream, "application/txt""1.txt");  
  39.         }  
  40.     }  
  41. }  

本文地址:https://www.lisen.me/asp-net-core-razor-files-to-download.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

  1. 你猜猜猜
    你猜猜猜 【农民】 @回复

    你猜猜猜

  2. 哈哈
    哈哈 【农民】 @回复

    测试一下