Загрузка файлов Редактировано: 28.08.2020 в 04:16
uploader.getUploadURL(methodName, params, returnAll)
Данный метод позволяет быстро получить url для загрузки файла.
Первым аргументом метод принимает метод, обращаясь к котором, вы хотите получить url адрес сервера. Пример: photos.getWallUploadServer
Вторым аргументом - параметры для запроса. Эти параметры вышлются вместе с GET запросом.
Третий аргумент - надо ли возвращать только URL или вернуть еще и ответ сервера
// 3 аргумент - true
{
url: VKResponseJSON,
vk: EasyVK,
vkr: VKResponseJSON
}
//3 аргумент - false
{
url: 'urlString',
vk: EasyVK
}
Пример использования
const method = 'photos.getWallUploadServer'
const server = vk.uploader
server.getUploadURL(method,{
group_id: '153044419'
}).then(({ url }) => {
console.log(url)
}).catch(console.error)
uploader.uloadFile()
Данный метод загружает файл на сервер по заданному ему URL, вы можете его использовать в связке с методом uploader.getWallUploadServer() для удобства.
Первый аргумент - URL адрес сервера, на который нужно будет делать POST запрос с файлом
Второй аргумент - filePath, путь к файлу, который надо будет отправить, используйте для генерирования пути модуль path, который уже встроен в Node.js
Третий аргумент - fieldName, это имя поля, в котором отправится файл. То есть по этому полю сервер будет искать нужный файл, как это обычно бывает, это может быть photo или просто file, уточняйте в документации API.
Четвертым аргументом принимаются параметры, эти параметры могут отправиться в дополнение к файлу, но они необязательны.
Пример использования
const path = require('path')
easyvk(/*параметры для авторизации*/).then(vk => {
return vk.uploader.getUploadURL(
'photos.getMessagesUploadServer', {}, true
)
}).then(async ({vk, url, vkr}) => {
const field = 'photo'
const server = vk.uploader
const me = 356607530
const filePath = path.join(__dirname, 'photo.png')
url = url.response.upload_url
//Загружаем файл тут
let {vkr: fileData} = await (server.uploadFile(url, filePath, field, {}))
//Сохраняем фотографию, чтобы дальше ее прикреплять к сообщениям или куда-то еще
fileData = await ( vk.call('photos.saveMessagesPhoto', fileData) )
fileData = fileData.vkr.response[0]
//Прикрепляем к сообщению сохраненную фотку
const attahcments = [
`photo${fileData.owner_id}_${fileData.id}_${fileData.access_key}`
]
//Отправляем себе фотку
return vk.call('messages.send', {
user_id: me,
attachment: attahcments,
message: 'Hello! Отправляю тебе мою фотку. Как тебе?'
})
})