Отправка документа в ВК, через cURL

189
01 июня 2018, 09:00
$res = file_get_contents('https://api.vk.com/method/docs.getMessagesUploadServer?type=doc&peer_id='.$id.'&v=5.73&access_token='.$token); 
$res = json_decode($res,true)['response']; 
$upload_url = $res['upload_url']; 
$postdata['file1'] = curl_file_create('/file.txt', 'text/plain', 'file.txt'); 
$ch = curl_init(); 
curl_setopt_array($ch, [ 
CURLOPT_POSTFIELDS => $postdata, 
CURLOPT_URL => $upload_url, 
CURLOPT_POST => 1, 
CURLOPT_RETURNTRANSFER => 1, 
]); 
$curl_result = json_decode(curl_exec($ch)); 
curl_close($ch); 
$result = json_decode(file_get_contents('https://api.vk.com/method/docs.save?file='.$curl_result['file'].'&v=5.73&access_token='.$token),true); 
print_r('doc'.$result['response'][0]['owner_id'].'_'.$result['response'][0]['id']);

Как мне кажется верно, но файл не отправляется и $curl_result пустой. Где может быть ошибка?

Answer 1

Не хватает заголовка Content-Type

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data; charset=UTF-8'));

https://vk.com/dev/upload_files_2?f=10.%20%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0%20%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2

READ ALSO
Функция вывода записей с условием по дате

Функция вывода записей с условием по дате

В БД MySql есть столбец 'created_at' с датой и временем

170
как данные из angularjs отправить через $_POST

как данные из angularjs отправить через $_POST

не могу отправить данные из формы в php возвращает пустой массив хотя тут все данные выводятся пример php

208
Call to a member function execute() on boolean

Call to a member function execute() on boolean

Есть пхп файл, отобращающий БД в формате JSONPHP:

261
Telegram, php алгоритм пагинации

Telegram, php алгоритм пагинации

У меня есть такой алгоритм пагинации для inline_keyboard, который строит 2 колонки по 6 элементов, и если элементов больше 12, но меньше 24 (раньше больше...

224