面向云技术架构 - 痴者工良

  • 首页
  • 工良写的电子书
    • kubernetes 教程
    • 从 C# 入门 Kafka
    • 多线程和异步
    • 动态编程-反射、特性、AOP
    • 表达式树
  • 本站文章导航
  • 隐私政策
愿有人陪你颠沛流离
遇到能让你付出的事物或者人,都是一种运气。
能遇到,就该珍惜。或许你们最终没能在一起,但你会切实地感受到力量。
正因为这样,那段相遇才变得有价值,才没有辜负这世间的每一段相遇。
  1. 首页
  2. .NET
  3. 正文

ASP.NET Core 返回文件、用户下载文件,从网站下载文件,动态下载文件

2019年12月15日 1224点热度 1人点赞 0条评论
内容纲要

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

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


Action 格式

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

返回 FileResult 类型,File() 对象

就这么简单。


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#获取文件类型可以参考

http://www.cnblogs.com/zzsdream/articles/5796763.html

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

http://tool.oschina.net/commons/

 

笔者附上小方法

//引入
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");
        }

 

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

 

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: asp core net 下载 文件
最后更新:2021年2月21日

痴者工良

高级程序员劝退师

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

文章目录
  • File() 对象
    • 获取文件类型

COPYRIGHT © 2022 whuanle.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备18051778号

粤公网安备 44030902003257号