Извините, я новичок, но я строю квазар-фронтенд, используя стежок mongodb в качестве бэкенда.
Я пытаюсь загрузить изображение с помощью javascript sdks и AwsRequest.Builder.
Квазар дает мне объект изображения с данными, закодированными в base64.
Я удаляю строку заголовка из строки base64 (часть, которая говорит «data: image / jpeg; base64,»), я конвертирую ее в двоичный файл и загружаю в корзину aws s3.
Я могу получить данные для загрузки очень хорошо, и когда я загружаю их снова, я получаю именно те байты, которые я загрузил, так что пошаговая передача через стежок к aws S3 и обратно, кажется, работает.
Только загружаемое изображение не может быть открыто в S3 и не может быть открыто после загрузки.
Кажется, что трудности заключаются в преобразовании в двоичную строку строки base64 и / или в выборе правильных параметров загрузки для стежка.
Вот мой код:
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 для преобразования в двоичный файл согласно предложению Хейли ниже, но я получаю следующую ошибку:
boot_stitch__WEBPACK_IMPORTED_MODULE_3__["BSON"].Binary.fromBase64 is not a function.
Я также пробовал другие способы преобразования строки base64 в двоичную, например, функцию vanilla atob () и модуль BUFFER npm, но безрезультатно.
Я, должно быть, где-то делаю глупости, но не могу найти выход.