ASP.NET Core实现动态获取文件并下载

ASP.NET Core 中,可以在静态目录添加文件,直接访问就可以下载。但是这种方法可能不安全,也不够灵活。

我们可以在 Controller 控制器中 添加 一个 Action,通过此Action,即可访问服务器的任何文件。

Action 格式

    public FileResult Down()
        {
        return File(xxx,xxx,xxx);
        }

File() 对象

问题在于这个 File() 对象,应该怎么写

笔者举个例子

在100%无错的条件下,文件路径 F:\a.txt

  • 1,创建一个文件流 FileStream
  • 2,获取文件类型 Content-Type,可以用代码获取,也可以用字符串填写
  • 3,设置文件名
var stream = System.IO.File.OpenRead(“F:\a.txt”);  //创建文件流

txt 的文件类型为 text/plain

设置文件名为 b.txt

那么返回的File 代码如下

return File(stream, "text/plain", “b.txt");

就这么简单。

获取文件类型

C#获取文件类型可以参考

https://www.jb51.net/article/234584.htm

关于文件类型对应得Context-Type

http://tools.jb51.net/table/http_content_type

笔者附上小方法

//引入
using System.IO;

var contentype = MimeMapping.GetMimeMapping(fileName);      //获取文件类型

动态获取文件

 public FileResult DownSH(string DownM)  //要下载文件码
        {
            var path = _sqlContext.jexusSqls.FirstOrDefault(a => a.DownM == DownM.ToString()).FilePath;  //在数据库查找此文件码的文件地址
            if (!System.IO.File.Exists(path)) return null;

            var stream = System.IO.File.OpenRead(path);  //创建文件流

            return File(stream, "application/x-sh", DownM+".sh");
        }

编写方式多种多样,只需要解决文件流、文件类型、文件名,这三个核心即可。

到此这篇关于ASP.NET Core实现动态获取文件并下载的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • asp.net实现多个文件同时下载功能

    本文实例为大家分享了asp.net多个文件同时下载的具体代码,供大家参考,具体内容如下 1.首先读取文件夹下的文件,可能同时存在多个文件 2.选中文件,然后点击下载,同时可以选择多个文件. 思路:通过生产压缩包的形式进行下载,然后再清楚压缩包,这样用户可以一次性全部下载下来. 一.获取目录下的所有文件,然后绑定到checkboxlist中 ,代码如下: ckl_ck.Items.Clear(); DirectoryInfo TheFolder = new DirectoryInfo(Server

  • 在ASP.NET中下载文件的实现代码

    这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令: Response.Redirect("test.doc") 您可以把上面这行指令放在Button的Click事件当中,当用户点击按钮之后,网页就会被转址到该word档,造成下载的效果. 但是这样的下载有几个问题: 1. 无法下载不存在的文件:例如,我们若是想把程序动态(临时)产生的文字,当作一个文件下载

  • asp.net实现服务器文件下载到本地的方法

    1.说明 通过文件下载框实现将服务器上的文件下载到本地指定位置.这里需要指定服务器文件路径 //服务器文件路径 string strFilePath = Server.MapPath("~") + "/excel/20170206104654.xlsx"; FileInfo fileInfo = new FileInfo(strFilePath); Response.Clear(); Response.AddHeader("content-disposit

  • ASP.NET中下载文件的几种实例代码

    复制代码 代码如下: //TransmitFile实现下载     protected void Button1_Click(object sender, EventArgs e)    {        /*         微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite         下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题.         代码如下:         */

  • asp.net中文件下载功能的实例代码

    复制代码 代码如下: //TransmitFile实现下载protected void Button1_Click(object sender, EventArgs e){ Response.ContentType = "application/x-zip-compressed";Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");string filena

  • ASP.NET Core文件上传与下载实例(多种上传方式)

    前言 前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了. 打算写个系列,但是还没想好目录,今天先来一篇,后面在整理吧. ASP.NET Core 2.0 发展到现在,已经很成熟了.下个项目争取使用吧. 正文 1.使用模型绑定上传文件(官方例子) 官方机器翻译的地址:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads 这里吐槽一下 - -,这TM的机器翻译..还不如自己看E文的..

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

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

  • asp.net实现文件下载的代码

    复制代码 代码如下: public partial class FileDownLoad : System.Web.UI.Page { //提供下载的文件,不编码的话文件名会乱码 private string fileName = HttpContext.Current.Server.UrlEncode("规范.rar"); private string filePath = HttpContext.Current.Server.MapPath("规范.rar");

  • asp.net C#实现下载文件的六种方法实例

    复制代码 代码如下: protected void Button1_Click(object sender, EventArgs e)  {  /*  微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite  下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题.  代码如下:  */ Response.ContentType = "application/x-zip-compressed"

  • ASP.NET实现从服务器下载文件问题处理

    假设在服务器的根目录下有个名为Download的文件夹,这个文件夹存放一些提供给引用程序下载的文件 public void DownloadFile(string path, string name){ try{ System.IO.FileInfo file = new System.IO.FileInfo(path); Response.Clear(); Response.Charset = "GB2312"; Response.ContentEncoding = System.T

随机推荐