Файл изображения поврежден при загрузке в общедоступную корзину amazon s3 с использованиемactjs - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь загрузить изображение с помощью responsejs, но изображение повреждено при загрузке в amazon s3.Код выглядит следующим образом.

uploadToS3 = (imageUri, fileName, fileType, file,success, failure) => {
    let body    = new FormData();
    let url=imageServer+fileName;
    body.append('key', fileName);
    body.append('acl', 'public-read');
    body.append('Content-Type', 'multipart/form-data');
    body.append('Content-Disposition', 'inline');
    body.append('file', {
      name: 'file',
      uri: imageUri,
      type: file.type
    });
    return axios.post(imageServer,body,
    { headers: {
        'Accept':file.type,
        'Content-Type':file.type,
      }}
    ).then(response => {
      console.log('[AWS S3] Response ==> ', response)
      this.props.addNewImage(url,this.props.arrayname);
      return response;
    }).catch(error => {
      console.log('[AWS S3] Error ==> ', error)
      return error;
    })
  }

1 Ответ

0 голосов
/ 06 июня 2018

На самом деле я допустил ошибку, послав неправильное значение для объекта «файл» в объекте formData. Правильный код выглядит следующим образом:

uploadToS3 = (imageUri, fileName, fileType, file,success, failure) => {
    let body    = new FormData();
    let url=imageServer+fileName;
    body.append('acl', 'public-read');
    body.append('Content-Type',file.type);
    body.append('key', fileName);
    body.append('file',file);

   return axios.post(imageServer,body)
    .then(response => {
      console.log('[AWS S3] Response ==> ', response)
      this.props.addNewImage(url,this.props.arrayname);
      return response;
    }).catch(error => {
      console.log('[AWS S3] Error ==> ', error)
      return error;
    })
  }


_handleImageChange(e){
    let reader = new FileReader();
    let file = e.target.files[0];
    console.log(file,'file');
    reader.onloadend = () => {
      let uri=reader.result;
      let fileType = /^data:image\/\w+;/.exec(reader.result)[0].replace(/^data:image/,"").replace("/","").replace(";","");
      let fileName='img'+`${new Date().getTime()}`+'.'+fileType;
      console.log("filename",fileName);
      this.uploadToS3(uri,fileName,fileType,file);     
    }
    reader.readAsDataURL(file);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...