大家好,今天写一下文件上传和下载相关的方法。
新建一个file控制器,进行file相关的操作。并写入测试方法,看前端api展示效果如何。
运行项目如下,选中一个图片上传进行测试:
如下图,响应了ok,说明项目api没什么问题。
接下来,先进行文件上传方法。本项目框架使用net core3.1,以后所有实践均在此项目下。服务接口层和实现层完善相应方法,并在容器中注入。
测试一下,看是否成功:
我试了下没有传文件,就执行,发现,报那么大一串,显然只有只有第一句是我想要的错误信息提示,其他的堆栈代码行什么的信息可以弄进日志里,所以我们把全局异常处理给弄进去,上次写的是控制器过滤器拦截,这次进行中间件写入拦截(其实感觉都一样emmmm):
这里其实写的不是很好,下一次我们将在这里进行优化,做一个统一的返回信息的格式。
测试一下如下:
记得中间件要在Configure里面使用一下,否则。。没啥用。
现在来上传下文件试试:
ok,文件完美上传。
接下来是下载:我们采用流的形式返回文件:
这里的contentType我写的是application/octet-stream,一般用于不知道是什么文件类型的时候使用,如果你知道具体的文件类型,也可以使用其他的contentType,具体参照问w3c上的http的contentType传输标准。
测试一下:
点击下载:
下载成功打开
本次demo写入到此结束,下次将写一下文件限制(大小、类型),文件上传的另一种形式,流上传;本次是使用IFormFile,整个文件读入 IFormFile,它是文件的C#表现形式,用于处理或者保存文件。文件上传所用的资源(磁盘、内存)取决于并发文件上传的大小。
可能写的有点粗糙,慢慢优化和整改。