загрузка изображения в S3 через JavaScript AWS SDK приводит к строке «[объект объекта]» - PullRequest
1 голос
/ 21 марта 2019

Следуя этому уроку , я пытаюсь загрузить изображение из моего ионного приложения в корзину amazon s3, используя следующий код:

uploadFile(filePath) {
    console.log('uploading: ', filePath);
    this.getFile(filePath).subscribe((file) => {
       console.log('file is', file);

       this.s3.upload({
          Key: file.name,
          Bucket: this.bucketName,
          Body: file,
          ACL: 'public-read'
        }, (err, data) => {
           console.log('error', err);
           console.log('data', data);
     })
   });
}

getFile(filePath):Observable<any> {
  return Observable.create((obs) => {
    (<any>window).resolveLocalFileSystemURL(filePath,(fileEntry) => {
      fileEntry.file((fileObject) => {
        obs.next(fileObject);
      })
    })
  });
}

Это подключается к aws fine, но файл, который он загружает, - это просто текстовый файл с [object object] вместо данных изображения jpeg.для контекста аргумент filePath передается путь к файлу к изображению, которое генерируется через библиотеку Ionic 3 @ionic-native/camera, и я запускаю код через эмулятор Android, если это имеет какое-либо значение.

Я почти уверен, что передаю неправильный тип объекта в свойство Body, когда выполняю загрузку, но не могу понять, каким он должен быть.Документация AWS говорит, что он должен принимать тип Blob, но мой метод getFile возвращает File, который, по-видимому, является экземпляром Blob, поэтому я решил, что он должен работать нормально?

1 Ответ

1 голос
/ 21 марта 2019

Похоже, что метод GetFile возвращает объект File, а не BLOB-объект. Итак, когда вы пишете:

Body: file,

Вы фактически передаете этот объект JS, а не BLOB-объект. Доказательством того, что это объект, является то, что file.name действительно возвращает имя.

Я бы посоветовал вам взглянуть на документ fileEntry.file, чтобы проверить, как вы можете получить доступ к байтовому массиву из возвращенного объекта File.

Из Кордовы Документация :

file: Creates a File object containing file properties.

Может быть, FileReader поможет вам на самом деле прочитать файл. https://cordova.apache.org/docs/en/1.8.1/cordova/file/filereader/filereader.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...