NodeJs 失败:应 params.Body 为字符串、缓冲区、流、Blob 或类型化数组对象
NodeJs Failure: Expected params.Body to be a string, Buffer, Stream, Blob, or typed array object
我正在使用 GraphicsMagic 修改图像。在图像上绘制文本后,我需要将结果图像上传到 s3 存储桶。但是我怀疑 toBuffer() 正在返回空结果,因为我收到以下错误:
Failure: Expected params.Body to be a string, Buffer, Stream, Blob, or typed array object
这是我的代码:
s3.getObject({Bucket: srcBucket, Key: srcKey}).promise()
.then(data => gm(data.Body)
.fill('white')
.stroke('black', 1)
.drawText(0, -60, text.toUpperCase(), 'center')
.toBuffer(imageType,function (err, buffer) {
if (err) return handle(err);
console.log('done!');
})
)
.then(buffer => s3.putObject({
Body: buffer,
Bucket: dstBucket,
ContentType: buffer.ContentType,
Key: dstKey,
}).promise()
)
.then(() => callback(null, {
statusCode: 200,
body: JSON.stringify({
url: dstKey
})
})
)
.catch(err => callback(err))
我认为你只能从toBuffer
中提供的回调中获取缓冲区。我假设您在代码中将某些函数定义为 callback
:
s3.getObject({Bucket: srcBucket, Key: srcKey}).promise()
.then(data => gm(data.Body)
.fill('white')
.stroke('black', 1)
.drawText(0, -60, text.toUpperCase(), 'center')
.toBuffer(imageType,function (err, buffer) {
if (err) return handle(err);
s3.putObject({
Body: buffer,
Bucket: dstBucket,
ContentType: buffer.ContentType,
Key: dstKey,
}).promise()
.then(() => callback(null, {
statusCode: 200,
body: JSON.stringify({
url: dstKey
})
})
)
.catch(err => callback(err))
// console.log('done!');
})
)
我正在使用 GraphicsMagic 修改图像。在图像上绘制文本后,我需要将结果图像上传到 s3 存储桶。但是我怀疑 toBuffer() 正在返回空结果,因为我收到以下错误:
Failure: Expected params.Body to be a string, Buffer, Stream, Blob, or typed array object
这是我的代码:
s3.getObject({Bucket: srcBucket, Key: srcKey}).promise()
.then(data => gm(data.Body)
.fill('white')
.stroke('black', 1)
.drawText(0, -60, text.toUpperCase(), 'center')
.toBuffer(imageType,function (err, buffer) {
if (err) return handle(err);
console.log('done!');
})
)
.then(buffer => s3.putObject({
Body: buffer,
Bucket: dstBucket,
ContentType: buffer.ContentType,
Key: dstKey,
}).promise()
)
.then(() => callback(null, {
statusCode: 200,
body: JSON.stringify({
url: dstKey
})
})
)
.catch(err => callback(err))
我认为你只能从toBuffer
中提供的回调中获取缓冲区。我假设您在代码中将某些函数定义为 callback
:
s3.getObject({Bucket: srcBucket, Key: srcKey}).promise()
.then(data => gm(data.Body)
.fill('white')
.stroke('black', 1)
.drawText(0, -60, text.toUpperCase(), 'center')
.toBuffer(imageType,function (err, buffer) {
if (err) return handle(err);
s3.putObject({
Body: buffer,
Bucket: dstBucket,
ContentType: buffer.ContentType,
Key: dstKey,
}).promise()
.then(() => callback(null, {
statusCode: 200,
body: JSON.stringify({
url: dstKey
})
})
)
.catch(err => callback(err))
// console.log('done!');
})
)