В приложении Ioni c 4 angular 7 пытается загрузить изображение из плагина камеры Cordova.
Выходные данные плагина Camera - это данные изображения base64.
this.camera.getPicture(options).then((imageData) => {
// imageData is either a base64 encoded string or a file URI
// If it's base64 (DATA_URL):
const base64Image = 'data:image/jpeg;base64,' + imageData;
this.uploadImage(url, base64Image )
}, (err) => {
// Handle error
});
Я генерирую предварительно подписанный URL-адрес AWS S3 для загрузки изображения на стороне сервера.
например, http://127.0.0.1/gdcom/63a5d901-7966-11ea-bf01-a7a6315cc36d/d418baf3-8129-11ea-a67d-3646e8bf199f.jpeg?AWSAccessKeyId=remote-identity&Expires=1587183624&Signature=mC6CRT6sPVKeCKM0aVj%2ByKzDy%2F8%3D
Приведенный ниже код не выдает никакой ошибки, но загруженное изображение является просто черным экраном, а не фактическим изображением.
Как правильно HTTP PUT для передачи изображения на S3, доступное изображение в кодировке base64?
uploadImage(url: string, imageData: any): Promise<any> {
const headers = new HttpHeaders({'Content-Type': 'image/jpeg;'});
return this.http.put(url, imageData, {headers: headers})
.pipe(
tap(data => console.log(JSON.stringify(data))),
catchError(this.handleError('uploadImage'))
).toPromise();
}