在 beforeSaveFile 中解析服务器锐包

问题描述

我想在 beforeSaveFile 触发器中使用这个包:sharp 但它不起作用。 beforeSaveFile 不会改变任何东西。

我的代码

    Parse.Cloud.define('test',async (req) => {
      try {
        const Resim = Parse.Object.extend('Resim')
        const obj = new Resim()
        const { photo } = req.params
    
        let uploadedFile = await new Parse.File(
          'galleryFile',{ base64: photo },'image/png'
        )
        obj.set('photo',uploadedFile)
        const data = await obj.save()
        return data
      } catch (error) {
        throw error
      }
    })
    
    Parse.Cloud.beforeSaveFile(async (req) => {
      const image = await sharp(req.file).resize(256)
      return image
    })

感谢您的帮助。

解决方法

我想通了。这是解决方案:

Parse.Cloud.beforeSaveFile(async (req) => {
    const file = req.file
    const fileData = await file.getData()
    const str = fileData.toString('base64')
    const imageBuffer = Buffer.from(str,'base64')
  
    const newImageBuffer = await sharp(imageBuffer)
      .resize(800,800)
      .webp({ quality: 70,lossless: true })
      .toBuffer()
  
    return new Parse.File(
      'image',{ base64: newImageBuffer.toString('base64') },'image/webp'
    )
  })