用户登录

在终端,项目所在目录的下面,生成一个服务,执行 nest generate service ,名字是 file 放在 file/services 里面。加上 --flat 选项。

回到项目,打开 FileModule 模块,在 exports 这里,添加一个 FileService,这样在其它地方导入 FileModule 以后,就可以使用这个模块里的 FileService 了。

打开 FileService ,在文件顶部导入一个 fs 来自 fs,然后导入一个 path 来自 path 。在类里面添加一个构造方法,注入一个依赖,需要的是 configService,类型是 ConfigService。

下面在这个服务类里面添加一个获取文件路径用的方法,名字是 getFilePath,接收一个 filename 参数,类型是 string,一个 size? 参数,类型是 string。

在方法里面,用 let 声明一个 filepath ,类型是 stirng。下面可以判断一下,如果 size 参数有值,设置一下 filepath ,等于 path.join,第一个项目是 this.configService.get,获取到 upload.fileResized 这个配置,第二个项目先是 filename ,小横线,然后是 size 。

else 不然的话,设置一下 filepath ,等于 path.join ,第一个项目用一下 this.configService.get 得到 upload.file 这个配置,然后是 filename 的值。

下面可以判断一下文件是否存在,声明一个 fileExist ,用一下 fs.existsSync ,检查一下 filepath,如果 !fileExist ,如果文件不存在,可以 throw 一个异常,新建一个 NotFoundException ,异常信息是文件不存在。最后可以 return filepath。

在这个 FileService 里面,再定义一个方法,名字是 getFileStream ,一个 filename 参数,类型是 string,一个 size? 参数,类型是 string,返回的东西是 fs.ReadStream 。方法里声明一个 filepath,用一下 this.getFilePath,提供一个 filename ,还有 size,最后 return fs.createReadStream ,提供一个 filepath 参数。

定义文件服务(FileService)《 Nest.js 企业级后端实践:文件服务 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点