申し訳ありませんが、私は初心者ですが、mongodb ステッチをバックエンドとして使用してクエーサー フロントエンドを構築しています。
ステッチ JavaScript SDK と AwsRequest.Builder を使用して画像をアップロードしようとしています。
Quasar は、base64 でエンコードされたデータを含む画像オブジェクトを提供してくれます。
base64 文字列 (「data:image/jpeg;base64,」と書かれている部分) からヘッダー文字列を削除し、バイナリに変換して aws s3 バケットにアップロードします。
データを正常にアップロードできます。もう一度ダウンロードすると、アップロードした正確なバイト数が取得されるため、aws S3 へのステッチを介した往復は機能しているようです。
ただ、アップロードした画像は S3 で開くことも、ダウンロードした後も開くこともできません。
問題は、base64 文字列のバイナリへの変換や、stitch の適切なアップロード パラメータの選択にあるようです。
これが私のコードです:
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.
また、バニラの atob() 関数や BUFFER npm モジュールなど、base64 文字列をバイナリに変換する他の方法も試しましたが、うまくいきませんでした。
どこかでバカなことをしているに違いないが、抜け道が見つからない。