Закрыть

Загрузчик файлов Редактировано: 28.08.2020 в 04:15

Загрузчик файлов может понадобиться в те моменты, когда нужно загрузить какой-то файл на сервер. К счастью, в Easy VK такой инструмент есть и я его постоянно использую во многих случаях

uploader.getUploadURL()

Метод позволяет быстро получить URL адрес сервера для загрузки файла

Аргументы

  • methodName * (<string>) - метод, обращаясь к которому, мы хотим получить URL адрес для загрузки файла, например, photos.getWallUploadServer
  • params (<Object>) - параметры запроса, эти параметры будут высланы вместе с запросом получения URL
  • returnAll (<boolean> ) - нужно ли возвращать весь ответ, или только url адрес

Метод в ответе вернет следующий объект


{
	url: UPLOAD_URL,
	vk: EASYVK,
	vkr: VKResponse // если выбран 3 аргумент
}


const method = 'photos.getWallUploadServer' 

vk.uploader.getUploadURL(method, {
	group_id: '153044419'
}).then(({ url }) => {

  console.log(url);

});

uploader.uloadFile()

Метод загружает указанный файл на указанный URL адрес сервера, используйте его в связке с методом uploader.getUploadURL() для большего удобства

Аргументы

  • url * (<string>) - URL адрес сервера, на него будет отправлен файл
  • filePath * (<string>) - Путь к файлу, который нужно загрузить
  • fieldName (<string>) ["file"] - название поля, в котором отправится файл, проще говоря - это то, как для сервера будет называться файл, например (php) $_FILES['photo'] и т.д Как называть данный параметр, уточняйте в документации API ВКонтакте
  • params (<Object>) - параметры, которые отправятся вместе с файлом в запросе

Посмотрите боевой пример использования загрузчика файлов

[+] (Спойлер) - Боевой пример использования загрузчика

const path = require('path')

easyvk(/*параметры для авторизации*/).then(vk => {
  
	  // Получаем URL для загрузки

	  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! Отправляю тебе мою фотку. Как тебе?'
	  })

})