ShenNiusModularity项目源码学习(10:ShenNius.FileManagement项目分析)
ShenNiusModularity项目支持七牛云和本地图片存储,其文件上传接口及实现就位于ShenNius.FileManagement项目内,该项目内文件不多,主要就是围绕上传本地及七牛云的实现及相关类定义。
扩展类FileManagemenServiceExtensions的AddFileUpload函数用于根据项目启动时的设置注册文件上传服务,在ShenNius.Admin.API项目的ShenniusAdminApiModule.OnConfigureServices函数内调用,默认将文件上传到本地。
Helper类定义上传文件时所需的辅助函数,就两个:GetStreamMd5函数计算文件的md5值,ImgSuffixIsExists函数判断上传的文件是否图片(根据文件后缀名判断),不是图片抛异常,是图片的话则返回保存文件时所用的文件名,ico文件为固定文件名,其它图片则使用的md5值作为文件名。
IUploadFile接口定义了四个函数:上传单个文件、上传多个文件、删除单个文件、获取文件列表,上传文件函数的输入参数之一为prefix,该参数用于设置文件保存目录。LocalFile类为上传本地实现类,默认将文件上传到wwwroot/Files/prefix路径下;QiniuCloudIFile类为上传到七牛云实现类,默认将文件上传到BasePath + prefix目录下,访问七牛云所需的参数保存到启动项目的appsettings.json的QiNiuOss节,具体如何访问请见参考文献2.
ShenNius.Admin.API项目的ArticleController、GoodsController、UploadController等3个控制器中使用IUploadFile接口,主要用于上传文章图片、商品图片等。
参考文献:
[1]https://gitee.com/shenniu_code_group/shen-nius.-modularity
[2]https://developer.qiniu.com/kodo/manual/put-policy