Загрузка файлов Редактировано: 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! Отправляю тебе мою фотку. Как тебе?'
  })

})