@rusgayfer

Загрузка фото в альбом API VK (пустое значение photos_list)?

Помогите, в чем ошибка. Возвращает пустое значение при сохранении

if (isset($_POST['reload']) && $_POST['reload'] !== '') {
    if (isset($rowCount2) == isset($groupId[1])) {
    $allowFiles = ['jpg', 'png', 'gif', 'bmp', 'jpeg'];
    $attachments = '';  
    $account['token'] = 'тут токен';
    $account['album'] = 243088786;
    $token = $account['token'];
     $attachforpost = '';
	 // загрузка обложки
    if (is_uploaded_file($_FILES['file']['tmp_name'])) {
        $ext = pathinfo($_FILES['file']['name']);
        if(!isset($ext['extension'])) { $ext['extension'] = '';}
        $ext = strtolower($ext['extension']);
            if (!in_array($ext, $allowFiles)) {
                $message = "<div class=\"callout callout-danger\">Ошибка при загрузке файла: загрузить можно только файлы с расширением jpg, png, gif, bmp, jpeg. </div>";} 
            elseif(!is_uploaded_file($_FILES["file"]["tmp_name"]) || !move_uploaded_file($_FILES["file"]["tmp_name"], "/tmp/{$token}_".$_FILES["file"]["name"])) {
                $message = "<div class=\"callout callout-danger\"> Ошибка при загрузке файла: попробуйте еще раз. </div>";$_SESSION['token'] = $token; } 
            else {
            $members = json_decode(file_get_contents("https://api.vk.com/method/photos.getUploadServer?album_id={$account['album']}&group_id=79668981&access_token={$account['token']}"),true);
           //var_dump($members);
                if (isset($members['response']['error'])) {
                $message = "<div class=\"callout callout-danger\"> Ошибка при загрузке файла: Сервис недоступен, попробуйте повторить позднее. </div>"; 
                $_SESSION['token'] = $token;
                } else {  
                    $curl = curl_init($members['response']['upload_url']);
                    $opts = [
                      CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2',
                      CURLOPT_RETURNTRANSFER => true,
                      CURLOPT_SSL_VERIFYPEER => false,
                      CURLOPT_SSL_VERIFYHOST => false,
                      CURLOPT_POSTFIELDS => [
                        'file1' => "@/tmp/{$token}_".$_FILES["file"]["name"]
                      ]
                    ]; 
                    curl_setopt_array($curl, $opts);
                    $photoRequest = json_decode(curl_exec($curl), true); 
                    $membeer = json_decode(file_get_contents("https://api.vk.com/method/photos.save?server={$photoRequest['server']}&photos_list={$photoRequest['photos_list']}&album_id={$account['album']}&group_id=79668981&hash={$photoRequest['hash']}&access_token={$account['token']}"),true);
                   	//var_dump($membeer);	
                    if (isset($request['response']['error'])) {
                    $message = "<div class=\"callout callout-danger\"> Ошибка при загрузке файла: Сервис недоступен, попробуйте повторить позднее. </div>";
                    $_SESSION['token'] = $token; } 
                    else { $attachforpost = $membeer['response'][0]["src"];
                         }					 
                }
            }
    } 
}
}
  • Вопрос задан
  • 1398 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
Попробуйте вместо
'file1' => "@/tmp/{$token}_".$_FILES["file"]["name"]

сделать так:
'file1' => new CURLFile("/tmp/{$token}_".$_FILES["file"]["name"]);


Дело в том, что «С версии PHP 5.5.0, префикс @ устарел и файлы можно отправлять с помощью CURLFile
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@MaxTheCapybara
Видел похожий вопрос. Там хорошо изложена структура запроса, и тоже используется curl
Как загрузить фото на сервер VK (c++, curl)?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 11:08
5000 руб./за проект
19 апр. 2024, в 10:59
150000 руб./за проект
19 апр. 2024, в 10:02
6000 руб./за проект