抱歉我是个新手,但我正在使用mongodb stitch作为后端构建quasar前端。 我正在尝试使用stitch javascript sdks和AwsRequest.Builder上传图像。 Quasar给我一个带有base64编码数据的图像对象。 我从base64字符串中删除头字符串(即“data:image/jpeg;base64,”部分),将其转换为二进制并将其上传到AWS s3存储桶。 我可以很好地上传数据,当我再次下载时,我得到了我上传的确切字节,因此通过stitch到aws S3再回来的往返似乎有效。 只有上传的图像既无法在S3中打开,也无法在下载后打开。 困难似乎在于将base64字符串转换为二进制和/或选择适当的上传参数以供stitch使用。 这是我的代码:
在上面的代码片段中,我尝试使用BSON.Binary.fromBase64进行二进制转换,根据Haley下面的建议,但是我得到了以下错误:
var fileSrc = file.__img.src // valid base64 encoded image with header string
var fileData = fileSrc.substr(fileSrc.indexOf(',') + 1) // stripping out header string
var body = BSON.Binary.fromBase64(fileData, 0) // here I get the BSON error
const args = {
ACL: 'public-read',
Bucket: 'elever-erp-document-store',
ContentType: file.type,
ContentEncoding: 'x-www-form-urlencoded', // not sure about the need to specify encoding for binary file
Key: file.name,
Body: body
}
const request = new AwsRequest.Builder()
.withService('s3')
.withRegion('eu-west-1')
.withAction('PutObject')
.withArgs(args)
aws.execute(request.build())
.then(result => {
alert('OK ' + result)
return file
}).catch(err => {
alert('error ' + err)
})
在上面的代码片段中,我尝试使用BSON.Binary.fromBase64进行二进制转换,根据Haley下面的建议,但是我得到了以下错误:
boot_stitch__WEBPACK_IMPORTED_MODULE_3__["BSON"].Binary.fromBase64 is not a function.
我还尝试了其他将base64字符串转换为二进制的方法,例如使用原始的atob()函数和BUFFER npm模块,但都没有成功。
我肯定是在某处犯了愚蠢的错误,但我找不到解决方法。
import { stitchClient,RemoteMongoClient,AwsServiceClient,AwsRequest,BSON } from 'boot/stitch'
,但我仍然得到TypeError: boot_stitch__WEBPACK_IMPORTED_MODULE_3__["BSON"].Binary.fromBase64不是一个函数。
- Bruno Ronchettinew BSON.Binary(fileData, 0x00)
- haley