#javascript #amazon-s3 #axios #jpeg
#javascript #amazon-s3 #аксиос #jpeg
Вопрос:
Я пытаюсь обновить локальный файл изображения JPG в корзину S3, используя запрос REST PUT и Axios.
Мне удалось отправить запрос PUT и получить положительный ответ от службы AWS S3, но то, что было загружено, — это не файл JPG, а файл JSON.
Это код, который я использую:
//Create the FormData
var data = new FormData();
data.append('file', fs.createReadStream(image_path));
//Send the file to File-system
console.log("Sending file to S3...");
const axiosResponse = await axios.put(image_signed_url, {
data: data,
headers: { 'Content-Type': 'multipart/form-data' }
}).catch(function(error) {
console.log(JSON.stringify(error));
return null;
});
Я уже пытался изменить заголовки на {'Content-Type': 'application/octet-stream' }
, но получил тот же результат.
Комментарии:
1. Вы уверены, что image_signed_url сгенерирован для файла JPG?
2. @CyberEternal я делаю, иначе будет невозможно что-либо загрузить, поскольку подпись не должна совпадать.
Ответ №1:
Ему не удалось заставить AXIOS работать, чтобы загрузить изображение.
Модуль выборки узлов сделал это, отправив изображение в виде двоичного файла и указав «Content-type».
Если я попытаюсь сделать то же самое с помощью AXIOS, изображение всегда будет упаковано в форму-данные, и результатом будет файл JSON, загруженный в корзину S3 вместо изображения.
//Send the file to File-system
console.log("Sending file to S3...");
const resp = await fetch(image_signed_url, {
method: 'PUT',
body: fs.readFileSync(image_path),
headers: {
'Content-Type': 'image/jpeg',
},
}).catch( err => {
console.log(err);
return null;
});