文件上传和下载+全局异常拦截处理器

18 篇文章 0 订阅
15 篇文章 0 订阅
大家好,今天写一下文件上传和下载相关的方法。

新建一个file控制器,进行file相关的操作。并写入测试方法,看前端api展示效果如何。

 

v2-7323fb3aa4aa0cdb3a5c7b73fc05f6fc_b.jpg

运行项目如下,选中一个图片上传进行测试:

 

v2-a11ec46fc4959e3760e6357bb1016a97_b.jpg

如下图,响应了ok,说明项目api没什么问题。

 

v2-2c9772fe7a8554b624bdb26030263b6d_b.jpg

接下来,先进行文件上传方法。本项目框架使用net core3.1,以后所有实践均在此项目下。服务接口层和实现层完善相应方法,并在容器中注入。

 

v2-3447b5bc74e4278d22f38de58c185ecb_b.jpg

 

v2-cf38c0257eb5de33b837180039f42f02_b.jpg

 

v2-1f8a36480689ef9ca93f6129bacc96f8_b.jpg

测试一下,看是否成功:

 

v2-d7989b8f7f9962eb064314a4d9fc5bcf_b.jpg

我试了下没有传文件,就执行,发现,报那么大一串,显然只有只有第一句是我想要的错误信息提示,其他的堆栈代码行什么的信息可以弄进日志里,所以我们把全局异常处理给弄进去,上次写的是控制器过滤器拦截,这次进行中间件写入拦截(其实感觉都一样emmmm):

 

v2-647fcb32a95b6a78255ade15601653b4_b.jpg

这里其实写的不是很好,下一次我们将在这里进行优化,做一个统一的返回信息的格式。

测试一下如下:

 

v2-2d4695872624c9dae85f38e83e93c84d_b.jpg

记得中间件要在Configure里面使用一下,否则。。没啥用。

现在来上传下文件试试:

 

v2-1b732eeeb021deb0e32889956e7963ed_b.jpg

ok,文件完美上传。

接下来是下载:我们采用流的形式返回文件:

 

v2-b37c28c404f7905965c7dbbbb5fcecbf_b.jpg

这里的contentType我写的是application/octet-stream,一般用于不知道是什么文件类型的时候使用,如果你知道具体的文件类型,也可以使用其他的contentType,具体参照问w3c上的http的contentType传输标准。

 

v2-3e9a8116a43b555a5aedf86171c6039c_b.jpg

测试一下:

 

v2-14a4f6a3d2132bb9552d90d9d2f37171_b.jpg

点击下载:

 

v2-08a0ace88c772b0c5bbd60cf3c085aeb_b.jpg

下载成功打开

 

v2-08923a377e9ec89086f8285eb707ccc0_b.jpg

本次demo写入到此结束,下次将写一下文件限制(大小、类型),文件上传的另一种形式,流上传;本次是使用IFormFile,整个文件读入 IFormFile,它是文件的C#表现形式,用于处理或者保存文件。文件上传所用的资源(磁盘、内存)取决于并发文件上传的大小。

可能写的有点粗糙,慢慢优化和整改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值