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