问题描述
我想在 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'
)
})