Загрузка файлов в React native с использованием ImagePicker и s3 - PullRequest
1 голос
/ 06 июня 2019

Я пытаюсь загрузить изображение с устройства на s3 напрямую.Я могу прочитать метаданные изображения и отправить их на сервер, чтобы сгенерировать предварительно подписанный URL для aws s3.У меня также есть предварительно подписанный URL-адрес, с которым я хочу загрузить файл / изображение, используя axios, но каким-то образом изображение / файл не загружается.Вот мой код.

Данные изображения (считываются программой ImagePicker)

data: "" // image raw data
fileName: "acx.jpg"
fileSize: ""
uri: ""
path: ""

Код для отправки выбранного изображения в aws s3.

const options = { headers: { 'Content-Type': fileType}};
axios.put(res.data.signedRequest, data , options);

I'm I'mполучить следующий respose.

res = {
  config: 
  data: ""
  status: 200
  StatusText: undefined
  ...
}

Так что я должен передать в качестве данных в запросе axios?

1 Ответ

1 голос
/ 06 июня 2019

Вы исследовали этот плагин ? Это сделало бы процесс намного проще. Вы можете попробовать

 upload = () => {
  const file = {
    uri: this.state.imageuri,
    name: acx.jpg,
    type: "image/jpeg"
  };
  const options = {
    keyPrefix: "ts/",
    bucket: "celeb-c4u",
    region: "eu-west-1",
    accessKey: "AKIAI2NHLR7A5W2R3OLA",
    secretKey: "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",
    successActionStatus: 201
  };
  return RNS3.put(file, options)
    .then(response => {
      if (response.status !== 201)
        throw new Error("Failed to upload image to S3");
      else {
        console.log(
          "Successfully uploaded image to s3. s3 bucket url: ",
          response.body.postResponse.location
        );
        this.setState({
          url: response.body.postResponse.location
        });
      }
    })
    .catch(error => {
      console.log(error);
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...