Перейти к содержанию

UploadFile#

Test Postman

Метод предназначен для загрузки файла в облачное хранилище, который можно отправить методом sendFileByUrl. А так же позволяет избежать ошибок получения файлов из внешних хранилищ и ускорить отправку сообщений, например, в сценарии рассылки.

Альтернативный способ отправить файл загрузкой с диска: sendFileByUpload.

Рекомендуется применять метод при рассылках однотипных сообщений:

  1. Методом UploadFile загрузите требуемый файл в хранилище Green-API, в ответе получите ссылку на файл.
  2. Методом SendFileByUrl производите отправку, используя полученную ссылку.

Срок хранения файлов 24 часа.

Запрос#

Для выгрузки файла требуется выполнить запрос по адресу:

POST
{{mediaUrl}}/waInstance{{idInstance}}/uploadFile/{{apiTokenInstance}}

Для получения параметров запроса mediaUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.

Параметры заголовка#

Параметр Обязательный Описание
Content-Type Да Тип файла в соответствии со списком MIME-типов . (Если тип файла отсутствует в списке, то вместо данной стоки передаётся GA-Filename)
GA-Filename Нет Имя файла с расширением, если файл отсутсвует в списке MIME-типов. Например, файлы как .go или .py. (Если тип файла соответствует списку, строка не передаётся, используется только Content-Type)

Если система не сможет определить тип файла, то произойдет отправка с типом по умолчанию (бинарный файл): .bin

Параметры запроса#

Параметр Тип Обязательный Описание
file binary Да Выгружаемый файл

Пример тела запроса#

В качестве тела запроса необходимо указать сам файл

Ответ#

Поля ответа#

Поле Тип Описание
urlFile string Ссылка на выгруженный файл (срок действия ссылки 24 часа)

Пример тела ответа#

{
    "urlFile": "https://sw-media-out.storage.yandexcloud.net/1101123456/c1aabd48-c1c2-49b1-8f2d-f575a41777be.jpg"
}

Ошибки uploadFile#

Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки

Код HTTP Идентификатор ошибки Описание
400 file should not be empty Пользователь отправил пустой файл. Загружаемый файл не должен быть пустым.
413 request entity too large Превышение допустимого размера файла (~99.9mb)
Возникает при отправке файлов в обработке 1С (версия 8.3.22.1923). Возможное решение: Сменить версию 1С.
500 Internal Server Error Неверно указан метод запроса. Измените метод на POST и повторите запрос

Примеры кода#

Примеры кода uploadFile#

import requests
url = "{{mediaUrl}}/waInstance{{idInstance}}/uploadFile/{{apiTokenInstance}}"

headers = {
'Content-Type': 'image/jpeg'
}

with open('C:\\window.jpg', mode='rb') as file:
    payload = file.read()

response = requests.post(url, headers=headers, data=payload)

print(response.text.encode('utf8'))
curl --location '{{mediaUrl}}/{{idInstance}}/uploadFile/{{apiTokenInstance}}' \
--header 'Content-Type: image/jpeg' \
--data '@test.jpg'
var file = new File("/Users/user/Desktop/fileExample.jpeg");
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{mediaUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/uploadFile/")
    .append({{apiTokenInstance}});

var byteArrayResource = new ByteArrayResource(Files.readAllBytes(file.toPath()));

var headers = new HttpHeaders();
headers.setContentType(MediaTypeFactory.getMediaType(file.getName())
    .orElse(MediaType.APPLICATION_OCTET_STREAM));

var requestEntity = new HttpEntity<>(byteArrayResource, headers);

var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var file = new File("/Users/user/Desktop/fileExample.jpeg");
var requestUrl = new StringBuilder();
requestUrl
    .append({{mediaUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/uploadFile/")
    .append({{apiTokenInstance}});

var response = Unirest.post(requestUrl.toString())
    .header("Content-Type", Files.probeContentType(file.toPath()))
    .body(Files.readAllBytes(file.toPath()))
    .asString();

System.out.println(response);
<?php
require './vendor/autoload.php';

use GreenApi\RestApi\GreenApiClient;

define( "ID_INSTANCE", "1101712345" );
define( "API_TOKEN_INSTANCE", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345" );

$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE );

$result = $greenApi->sending->uploadFile(
    'C:\Games\PicFromDisk.png'
);

print_r(  $result->data );

Пример кода с использованием методов uploadFile + sendFileByUrl#

<?php
require './vendor/autoload.php';

use GreenApi\RestApi\GreenApiClient;

define( "ID_INSTANCE", "1101123456" );
define( "API_TOKEN_INSTANCE", "d75b3a66374942c5b3c019c698abc2067e151558acbd412345" );

$greenApi = new GreenApiClient( ID_INSTANCE, API_TOKEN_INSTANCE, 'http://127.0.0.1:8080' );

$result = $greenApi->sending->uploadFile(
    'C:\Games\PicFromDisk.png'
);

print_r(  $result->data );

$result = $greenApi->sending->sendFileByUrl(
    '79876543210@c.us',
    $result->data->urlFile,
    'googlelogo_color_272x92dp.png',
    'Google logo'
);

print_r(  $result->data );