.Net Core之实现下载文件的实例


当前第2页 返回上一页

能够看出这里主要通过handler作为参数名称来传递请求的后端方法,下面再来看看后端代码这样写的(为了方便下载文件的路劲我以love.apk为例):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

/// <summary>

        /// 虚拟文件地址输出下载       

        /// </summary>

        /// <returns></returns>

        public IActionResult OnPostDown()

        {           

        var addrUrl = "/bak/love.apk";           

        return File(addrUrl, "application/vnd.android.package-archive", Path.GetFileName(addrUrl));

        }       

        /// <summary>

        /// 文件流的方式输出        /// </summary>

        /// <returns></returns>

        public IActionResult OnPostDown01()

        {           

        var addrUrl = @"D:\F\学习\vs2017\netcore\Study.AspNetCore\WebApp02-1\wwwroot\bak\love.apk";           

        var stream = System.IO.File.OpenRead(addrUrl);           

        return File(stream, "application/vnd.android.package-archive", Path.GetFileName(addrUrl));

        }       

        /// <summary>

        /// 通过HttpClient获取另外站点的文件流,再输出       

        /// </summary>

        /// <returns></returns>

        public async Task<IActionResult> OnPostDown02()

        {            var path = "https://files.cnblogs.com/files/wangrudong003/%E7%89%B9%E4%BB%B701.gif";

            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(path);           

            var stream = await client.GetStreamAsync(path);           

            return File(stream, "application/vnd.android.package-archive", Path.GetFileName(path));

        }

后端3个post接受方法都同样使用了FileStreamResult来输出下载文件,不同点在于文件来源不同;

对于简单一些的站点来说,下载文件一般存在于站点目录下,有点类似于我这里的wwwroot/bak目录,因此能够通过站点虚拟目录下载,也就是咋们第一种的下载方式;

有一些站点为了文件安全性,一般会存在于web站点的相同服务器磁盘中,因此需要通过这里的第二种方式获取文件流,再传递给File();

最后一种就是把自己其他站点或者别人站点上的文件转一下,当做自己的文件来输出,这种方式也就是咋们常说的盗链方式之一

对于razor的handler参数,这里需要注意的是她对应是咋们后端代码OnGetxxx或者OnPostxxx方法中的xxx名称,这是一种razor请求规范,必须要遵守哦。

半年来使用NetCore的一些感想和焦虑

感想:

到目前netcore最新版本2.0,其api很强大了,就目前我做的几个项目使用来看,她api支持度很好;之前遇到过也有人问过我有处理图片的api吗,答案是肯定的,现在nuget包社区已经有很多种包支持图片处理了,有兴趣的朋友可以去看看https://www.nuget.org/packages;在穿插了几个项目后,深刻感觉netcore的学习成本其实并不高,就netcore的mvc项目而言,只要之前会mvc框架,或是webform(个人感觉对应razor)那用起来是无压力;这里建议有些不敢尝试netcore2.0的朋友或者觉的有学习成本的朋友不妨试试;

焦虑:

netcore2.0出来还是有段时间了,这段时间尽管有很多朋友在博客园分享很多相关的文章和git上的项目;但是在3个netqq群中反应或者提出netcore开发遇到的问题情况来看还是很少,不由让人担心;当然了我所知道的几个大牛们或公司的部分技术决策层的人也在关注并也陆续用这再做新项目;其他城市我不了解,就北京这边很有一些创业公司的创业项目起始点就用的是netcore,所以希望还在观望的朋友或领导们是时候开始行动了,一起努力推动社区的发展。

以上就是.Net Core之实现下载文件的实例的详细内容!

返回前面的内容

相关阅读 >>

c#和.net是一个东西吗?c#与.net的区别与联系

core web中使用appsettings.json配置文件的实例详解(asp.net

正则表达式抓取网页信息

总结一些编码和设计原则实例

什么是asp.net core?介绍asp.net core的优势

.net是否真的被国内市场嫌弃?

入门级的.net mvc 实例

比较c#和java中面向对象语法的区别

如何判断文件是否存在于perl中

c#接口的问题的解决办法详解

更多相关阅读请进入《.net》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...