我遇到一种情况,我需要保存用户签名并附加到他提出的pdf文档中。签名为png
当前相关代码:
let fileStream = await this.getStream('media', docID, name)
let file = await new Promise(resolve => {
let bufs = []
fileStream.on('data', chunk => {
bufs.push(chunk)
})
fileStream.on('end', () => resolve(Buffer.concat(bufs)))
})
signature = await Buffer.from(signature.replace(/^data:image\/\w+;base64,/, ''), 'base64')
const fileName = this.fileName('png',//?!?
fileNameArr)
const location = `${userID}/${fileName}`
await Drive.disk('minio')
.bucket(`clients`)
.put(location, Buffer.concat([signature, file])) //problematic line
.then(async () => {
const file = new File()
file.related_id = userID
file.file_name = fileName
file.file_ext = 'png' //?!?
file.bucket = 'clients'
file.type = type
file.status = 'archived'
await file.save()
})
到目前为止,在从客户端向服务器发送签名之前,我已经尝试过this.signaturePad.toDataURL('application/pdf', 1.0)
,但是它被忽略了并且仍然是png。
当然,保存此缓冲区会使他的部分内容被破坏
我尝试过的另一件事是实际创建pdf(我们的服务器堆栈中已经有pdfkit),但是该过程是减慢速度的方法。
有没有办法连接这两个缓冲区?