[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вконтакте API
skater4
Всем привет. Весь день парюсь с загрузкой картинок вконтакт, в гугле туча тем на форумах с подобной проблемой, но решения так и не нашел.

Есть вот такой код:

$curl = curl_init();
$params = array(
'file1' => '@' . __DIR__ . '/payqr.jpg'
);
curl_setopt($curl, CURLOPT_URL, $response->response->upload_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($curl, CURLOPT_POSTFIELDS, implode("&", $params));
$out = curl_exec($curl);


Я получаю адрес для загрузки картинок методом getUploadServer, а после запроса на него - {"server":627730,"photos_list":"[]","aid":209700722,"hash":"665d180e5c0431c5d83b0167dbc36307","gid":84427901}
Пустой массив фоток. Где может быть зарыта собака?
Guest
С каких соображений картинка содержится в поле file1? В API VK нет и упоминания о таком поле.
T1grOK
Цитата (Guest @ 5.08.2015 - 19:45)
С каких соображений картинка содержится в поле file1? В API VK нет и упоминания о таком поле.

I am. smile.gif

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
killer8080
Цитата (skater4 @ 5.08.2015 - 22:23)

  curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
  curl_setopt($curl, CURLOPT_POSTFIELDS, implode("&", $params));
Цитата
CURLOPT_POSTFIELDS
  Все данные, передаваемые в HTTP POST-запросе. Для передачи файла, укажите перед именем файла @, а также используйте полный путь к файлу. Тип файла также может быть указан с помощью формата ';type=mimetype', следующим за именем файла. Этот параметр может быть передан как в качестве url-закодированной строки, наподобие 'para1=val1&para2=val2&...', так и в виде массива, ключами которого будут имена полей, а значениями - их содержимое. Если value является массивом, заголовок Content-Type будет установлен в значение multipart/form-data.  Начиная с версии PHP 5.2.0, при передаче файлов с префиксом @, value должен быть массивом.  С версии PHP 5.5.0, префикс @ устарел и файлы можно отправлять с помощью CURLFile. Префикс @ можно отключить, чтобы можно было передавать значения, начинающиеся с @, задав опцию CURLOPT_SAFE_UPLOAD в значение TRUE.

implode тут вообще не в тему, если уж и формировать query string, то для этого есть http_build_query
skater4
Цитата (Guest @ 5.08.2015 - 19:45)
С каких соображений картинка содержится в поле file1? В API VK нет и упоминания о таком поле.

http://joxi.ru/eAO6gqWIXwyb2o а это что?
skater4
Цитата (killer8080 @ 6.08.2015 - 07:08)
Цитата (skater4 @ 5.08.2015 - 22:23)

  curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
  curl_setopt($curl, CURLOPT_POSTFIELDS, implode("&", $params));
Цитата
CURLOPT_POSTFIELDS
  Все данные, передаваемые в HTTP POST-запросе. Для передачи файла, укажите перед именем файла @, а также используйте полный путь к файлу. Тип файла также может быть указан с помощью формата ';type=mimetype', следующим за именем файла. Этот параметр может быть передан как в качестве url-закодированной строки, наподобие 'para1=val1&para2=val2&...', так и в виде массива, ключами которого будут имена полей, а значениями - их содержимое. Если value является массивом, заголовок Content-Type будет установлен в значение multipart/form-data.  Начиная с версии PHP 5.2.0, при передаче файлов с префиксом @, value должен быть массивом.  С версии PHP 5.5.0, префикс @ устарел и файлы можно отправлять с помощью CURLFile. Префикс @ можно отключить, чтобы можно было передавать значения, начинающиеся с @, задав опцию CURLOPT_SAFE_UPLOAD в значение TRUE.

implode тут вообще не в тему, если уж и формировать query string, то для этого есть http_build_query

Я пробовал по разному. И массивом и так, и тупо строкой. Бестолку.
kaww
Цитата (skater4 @ 7.08.2015 - 09:48)
Я пробовал по разному. И массивом и так, и тупо строкой. Бестолку.

Ну вроде код выглядит рабочим, кроме implode - он не нужен, что говорит curl_error()?
Файл точно существует и доступен для чтения?
skater4
Цитата (kaww @ 7.08.2015 - 09:56)
Цитата (skater4 @ 7.08.2015 - 09:48)
Я пробовал по разному. И массивом и так, и тупо строкой. Бестолку.

Ну вроде код выглядит рабочим, кроме implode - он не нужен, что говорит curl_error()?
Файл точно существует и доступен для чтения?

ошибки в курле нет. просто вконтакт отдает пустой photos_list

файл отправляю из той же папки что и php файл. удаленные тоже пробовал. результат один и тот же
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.