У меня есть вызов API POST-запроса, чтобы добавить сообщение с заголовком, текстом и несколькими изображениями в следующем формате:
{
"title" : "post title",
"text" : "post text",
"fileName" : ["S3-file-image1.png", "S3-file-image2.png", "S3-file-image3.png"...]
}
Итак, я создал форму для добавления заголовка, текста и выбора нескольких файл изображения. Теперь в html я могу напрямую связать данные формы для заголовка и текста, но для изображения, сначала я загружаю выбранные изображения в корзину S3 и извлекаю местоположение файла изображения S3. Вот код, который я использовал для загрузки изображения
postData = {
"title" : "post title",
"text" : "post text"
};
postData.fileName = []; // Here i am creating fileName array with empty
const bucket = new S3(
{
accessKeyId: 'my-access-key-id',
secretAccessKey: 'secret-access-key',
region: 'ap-region'
}
);
const params = {
Bucket: 'Bucket-Name',
Key: fileName,
Body: file,
ACL: 'public-read',
ContentType: fileType,
ServerSideEncryption: 'AES256'
};
bucket.upload(params).on('httpUploadProgress', (evt) => {
console.log(evt.loaded + ' of ' + evt.total + ' Bytes');
}).send(
(err, data) => {
if (err) {
console.log('There was an error uploading your file: ', err);
return false;
}
console.log('Successfully uploaded file.', data);
postData.fileName.push(btoa(data.Location)); // Here I am pushing uploaded file location to postData.
}
);
consol.log(postData.fileName); // It gives empty array with 'i' (Value below was evaluated just now) on next to array. On tapping arrow of that empty array gives the result I required.
const body = JSON.stringify(postData);
return this.http.post<any>(this.url + groupId + '/post/add', body, {headers: headersType});
Из-за того, что при отправке запроса имя местоположения выталкивается в пустой массив, в качестве ответа он принимает только пустой массив. Как я могу получить местоположение загруженного изображения на postData