Загрузка фотографий в группу через VK API
Нужно отправить фото в альбом ВКонтакте. Получаю адрес, пытаюсь переместить туда фотографию с накопителя (через полный путь к файлу), но ВКонтакте после отправки фотографии высылает пустой photos_list по неизвестной мне причине. Скорее всего, что я как-то неверно высылаю фотографию для загрузки на сервер. Спасибо.
async function uploadPhoto() {
const url = await fetch(encodeURI(`https://api.vk.com/method/photos.getUploadServer?access_token=${process.env.TOKEN}&album_id=${process.env.ALBUM_ID}&group_id=${process.env.GROUP_ID}&v=5.131`))
.then(response => response.json())
.then((data) => {
return (data['response']['upload_url'])
});
const formData = new FormData();
const filePath = await downloadPhoto('https://shikimori.org/system/screenshots/original/6b88af9f4e1e40de987f1acf694a3d7759a45636.jpg?1521803713');
console.log(filePath);
formData.append('file', filePath);
const res = await fetch(url, {
method: 'POST',
body: formData
})
.then(response => response.json())
.then((data) => {
return data
});
const savePhoto = await fetch(`https://api.vk.com/method/photos.save?access_token=${process.env.TOKEN}&album_id=${process.env.ALBUM_ID}&group_id=${process.env.GROUP_ID}&server=${res['server']}&photos_list=${res['photos_list']}&hash=${res['hash']}&v=5.131`)
.then(response => response.json())
.then((data) => {
console.log(data)
});
}
uploadPhoto();
Ответы (1 шт):
Автор решения: r1hsfoa
→ Ссылка
Решение оказалось довольно простым. При добавлении фото в FormData нужно использовать fs.createReadStream. Пример:
var fs = require('fs');
formData.append("file1", fs.createReadStream(filePath));