打开头像已创建事件的处理器, AvatarCreatedEventHandler ,在文件顶部,导入 fs,来自 fs 模块,再导入 path ,来自 path 。
在这个事件处理器里面需要两个依赖,在构造方法里面,先注入一个 configService 依赖,类型是 ConfigService,下面还需要一个 commandBus,类型是 CommandBus。
在 handle 方法里面,先准备一下需要的数据,解构一下事件参数,需要的是 filename,来自 event.params。
然后准备一下头像路径,声明一个 avatarPath,等于 path.join,先是 this.configService.get 获取到 upload.avatar ,再加上一个 filename,这样这个 avatarPath 就是用户头像文件的路径。
如果文件不存在可以直接返回,判断一下 !fs.existsSync,路径是 avatarPath,然后 return 。
下面准备一下调整大小后的头像存放位置。声明一个 avatarResizedPath ,值可以用一下 this.configService.get 获取到 upload.avatarResized 这个配置。
然后执行一下调整图像大小命令,新建一个 ResizeImageCommand,设置一下命令参数,filename 是 filename,filepath 文件路径是 avatarPath,destination 存储目录是 avatarResizedPath 。再提供一组 sizes,一个数组,里面添加一个对象,suffix 设置成 large ,width 是 256,height 也是 256,fit 设置成 cover。
复制两份,再添加一个尺寸,suffix 是 medium ,宽度是 128,高度是 128。还需要一个尺寸,suffix 是 small ,width 是 64,height 是 64。