欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-10 14:04:52
下载文件到本地是很多项目开发中需要实现的一个很简单的功能。说简单,是从具体的代码实现上来说的,.net的文件下载方式有很多种,本示例给大家介绍的是asp.net web a...

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

using system;
using system.collections.generic;
using system.io;
using system.linq;
using system.net;
using system.net.http;
using system.net.http.headers;
using system.web.http;

namespace downloadfilefromwebapi.controllers
{
 [routeprefix("download")]
 public class downloadcontroller : apicontroller
 {
 [route("get_demo_file")]
 public httpresponsemessage getfilefromwebapi()
 {
  try
  {
  var filepath = system.web.hosting.hostingenvironment.mappath(@"~/download/editplus64_xp85.com.zip");
  var stream = new filestream(filepath, filemode.open);
  httpresponsemessage response = new httpresponsemessage(httpstatuscode.ok);
  response.content = new streamcontent(stream);
  response.content.headers.contenttype = new mediatypeheadervalue("application/octet-stream");
  response.content.headers.contentdisposition = new contentdispositionheadervalue("attachment") { 
  filename="wep api demo file.zip"
  };
  return response;
  }
  catch
  {
  return new httpresponsemessage(httpstatuscode.nocontent);
  }
 }
 }
}

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

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