За последние 24 часа нас посетил 6561 программист и 506 роботов. Сейчас ищут 132 программиста ...

Загрузка документов по vk api

Тема в разделе "PHP для новичков", создана пользователем Dron-Boy, 10 авг 2018.

  1. Dron-Boy

    Dron-Boy Активный пользователь

    С нами с:
    20 ноя 2014
    Сообщения:
    905
    Симпатии:
    112
    Написал публикацию записей в группе по vk api . С картинками все ок. А вот с документами лажа. Пытаюсь загрузить но не получается, писал в тех поддержку сами не знают пока. Может кто то знает есть библиотеки или классы для работы с vk api/
    А так вот пока мой код может кто что то знает и заметит
    ошибка такая
    One of the parameters specified was missing or invalid: file field is invalid
    а вот само поле file

    [key] => file
    [value] => 317534902|168148011|0|834604|c1d4800b4d|gif|4706702|1.gif|f6adfa4eb016ea0818bdd02bb1733b12|4d5a4a23459a5cec9c22d81fc3375467|m_c1d4800b4d|70|m:130x100,s:100x75,x:604x605,o:479x480|eyJkaXNrIjoiMTAifQ==

    а вот и сам код


    PHP:
    1. $post_data = array("file" => $file);
    2. // получаем урл для загрузки
    3.                 $url = file_get_contents("https://api.vk.com/method/docs.getUploadServer?group_id=".$group_id."&v=".$v."&access_token=".$token);
    4. $url = json_decode($url)->response->upload_url;
    5. //// отправка post картинки
    6.                 $ch = curl_init();
    7.                 curl_setopt($ch, CURLOPT_URL, $url);
    8.                 curl_setopt($ch, CURLOPT_POST, true);
    9.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    10.                 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    11.                 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '1');
    12.                 curl_setopt($ch, CURLOPT_HTTPHEADER , ['Content-type: multipart/form-data']);
    13.                 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    14.                 $r  = curl_exec($ch);
    15.                 $result = json_decode($r,true);
    16.              
    17.                 $params = array(
    18.                     'access_token' => $token,
    19.                     'group_id' => $group_id,
    20.                     'file' => $result['file'],
    21.                     'v' => $v,
    22.                 );
    23.                 $safe = json_decode(file_get_contents('https://api.vk.com/method/docs.save' . '?' .http_build_query($params)), true);
    --- Добавлено ---
    Тема закрыта
    незнаю что повлияло но я сделал следующее
    с массива $params убрал group_id и добавил еще два поля это title и tags в итоге вот что получилось

    PHP:
    1.  $params = array(
    2.                     'file' => $result['file'],
    3.                     'title' => 'test',
    4.                     'tags' => 'test',
    5.                     'v' => $v,
    6.                     'access_token' => $token,
    7.                 );