当前位置:Gxlcms > asp.net > ASP.NET(C#) Web Api通过文件流下载文件的实例

ASP.NET(C#) Web Api通过文件流下载文件的实例

时间:2021-07-01 10:21:17 帮助过:12人阅读

下载文件到本地是很多项目开发中需要实现的一个很简单的功能。说简单,是从具体的代码实现上来说的,.NET的文件下载方式有很多种,本示例给大家介绍的是ASP.NET Web Api方式返回HttpResponseMessage下载文件到本地。实现的方法很简单,其中就是读取服务器的指定路径文件流,将其做为返回的HttpResponseMessage的Content。直接贴出DownloadController控件器的代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Net.Http;
  7. using System.Net.Http.Headers;
  8. using System.Web.Http;
  9. namespace DownloadFileFromWebApi.Controllers
  10. {
  11. [RoutePrefix("download")]
  12. public class DownloadController : ApiController
  13. {
  14. [Route("get_demo_file")]
  15. public HttpResponseMessage GetFileFromWebApi()
  16. {
  17. try
  18. {
  19. var FilePath = System.Web.Hosting.HostingEnvironment.MapPath(@"~/download/EditPlus64_xp85.com.zip");
  20. var stream = new FileStream(FilePath, FileMode.Open);
  21. HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
  22. response.Content = new StreamContent(stream);
  23. response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
  24. response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {
  25. FileName="Wep Api Demo File.zip"
  26. };
  27. return response;
  28. }
  29. catch
  30. {
  31. return new HttpResponseMessage(HttpStatusCode.NoContent);
  32. }
  33. }
  34. }
  35. }

实现以上控制器后,我们可以直接打开这个api的地址(示例中的地址为:http://localhost:60560/download/get_demo_file),即可弹出下载文件的对话框了,如图: asp-net-web-api-download-file 当然,也可以直接通过示例项目首页的下载链接体验,点击“下载示例文件”按钮,将会弹出保存文件的提示。 好了,示例比较简单,不用多说了。点击这里下载示例源码。

以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持脚本之家。

人气教程排行