Извините, я новичок, но я создаю интерфейс квазара, используя mongodb stitch в качестве бэкенда.
Я пытаюсь загрузить изображение с помощью stitch javascript sdks и AwsRequest.Builder.
Quasar дает мне объект изображения с данными в кодировке 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, но без особого удовольствия.
Я, должно быть, где-то делаю что-то глупое, но не могу найти выхода.