Мой PUT-запрос PUT в AWS S3 отображается как текст - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь загрузить общедоступные фотографии на стороне браузера в S3 Bucket.Я использую сервер для проверки подлинности моего запроса и предоставления браузеру подписанного URL-адреса.Мой оператор PUT работает, и в моем S3 Bucket будет добавлен новый объект.Метаданные поступают с «Content-Type»: application / json; charset = UTF-8.Несмотря на то, что я устанавливаю его в свой код как image / png.Кроме того, даже если я изменяю метаданные на «image / png», когда захожу по URL, чтобы просмотреть свое изображение, я вижу длинную строку текста, которая представляет собой данные, представляющие изображение, что-то вроде этого «[» data: image / png;base64, iVBORw0KGgoAAAANSUhEUgAAASQAAAEjCAYAAACb / HxUA], который продолжается около 26 000 символов.

Почему на странице отображается текст, а не изображение?

Вот мой код браузера для запроса:

axios.get('/picture', {params: { filename: `${this.props.user.id}_${Date.now()}`}})
        .then(response =>{
            var signedUrl = response.data;
            var headers= {
                   'ACL': 'public-read',
                  'Content-Type': this.state.imageType,
                };

            return axios.put(signedUrl, this.state.imgSrc, headers);
        })

Первый axios.get - это запрос кполучить подписанный URL.

Вот код сервера для создания подписанного URL.

const s3 = new aws.S3({
region: 'us-east-2',
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,

});

router.get('/', (req,res)=>{
    let params = {
        Bucket: 'beerphotos',
        Key: req.query.filename,
        //Body : req.query.picture[0],
        ACL: 'public-read',
        ContentType: 'image/png',
        Expires: 60,
    }
    s3.getSignedUrl('putObject', params, function(err, data) {
        if (err) {
            console.log('Error Getting Signed URL', err);
            return err;
        } else {
            console.log('This is the data', data)
            res.send(data);
        }
    })

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