SimBioT19
@SimBioT19
{{ user.about }}

Почему не работает метод docs.save Vk api?

Загружаю файл (документ) на сервера Вконтакте, затем отправляю им параметр file, но постоянно получаю ошибку с кодом 100:
One of the parameters specified was missing or invalid: file field is invalid

Хотя ничего при этом не делаю с этим параметром.
...

  if ($curl_error_code > 0) {
         return ['status' => 'error', 'text' => $curl_error_desc . ' (' . $curl_error_code . '); HTTP-код: ' . $curl_info];
  }

 $file_response = json_decode($curl_result, TRUE); // Получаю параметр file

// отправляю его
$response = $vk->api('docs.save',
                [
                    'access_token' => $group->access_token,
                    'file' => $file_response ['file']
                ]
            );

if (isset($response['error'])) { // Всегда ошибка, указанная выше

die(var_dump($respose));

}


С error возвращается мой параметр file, который если вставить в пример здесь https://vk.com/dev/docs.save
будет работать.

Так почему может возникать ошибка?

array(1) {
  ["error"]=>
  array(3) {
    ["error_code"]=>
    int(100)
    ["error_msg"]=>
    string(77) "One of the parameters specified was missing or invalid: file field is invalid"
    ["request_params"]=>
    array(4) {
      [0]=>
      array(2) {
        ["key"]=>
        string(5) "oauth"
        ["value"]=>
        string(1) "1"
      }
      [1]=>
      array(2) {
        ["key"]=>
        string(6) "method"
        ["value"]=>
        string(14) "docs.save.json"
      }
      [2]=>
      array(2) {
        ["key"]=>
        string(4) "file"
        ["value"]=>
        string(185) "205947707|86926188|-1|810538|d03df3de35|gif|251463|giphy.gif|61d36032d1452ac341f633061bb60c4e|4d47ff4fd604b035f4bb6a1183a5a897|m_d03df3de35|16|m:130x98,s:100x75,x:604x453,o:480x360|W10="
      }
      [3]=>
      array(2) {
        ["key"]=>
        string(1) "v"
        ["value"]=>
        string(4) "5.62"
      }
    }
  }
}
  • Вопрос задан
  • 1701 просмотр
Решения вопроса 1
tomnolane
@tomnolane
профессиональный разработчик
я загружаю так (правда не на php, а на c#, но суть одна и таже):
1) получаю сервер для загрузки:
var json = JObject.Parse(VkRequest("https://api.vk.com/method/docs.getUploadServer?v=" + Vk.Version + "&access_token=" + Vk.AccessToken)); // выполняю без group_id, и в данном случае документы будут сохранены в моём аккаунте в документах .. если нужен group_id, то id указываем положительным

парсю ответ и получаю url куда загружать
2) загружаю файл на указанный url (обычным POST запросом), получаю json ответ и беру от туда file
3) сохраняю и получаю как attachment:
string request_path = "https://api.vk.com/method/docs.save?file="+file+"&title=999999999&tags=9999999999&v="+Vk.Version+"&access_token=" + Vk.AccessToken;
            
var json = JObject.Parse(VkRequest(request_path)); // в json - уже мой attachment, который использую при отправке на стену


п.с.
Допустимые форматы: любые форматы за исключением mp3 и исполняемых файлов.
Ограничения: файл объемом не более 200 МБ.
Поле POST-запроса: file.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@temamagic
Баг со стороны вк. Ответ техподдержки: yeDiBBM.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы