Почему не работает MOVE в API Яндекс.Диска?

Ссылка скопирована
1 ответ

Пробую переместить папки на диске и получаю ошибку, хотя делаю все правильно.
Получил access_token, попробовал получить список папок на диске через метод
https://cloud-api.yandex.net/v1/disk/resources
все работает прекрасно.
Попробовал создать папку через метод PUT
https://cloud-api.yandex.net/v1/disk/resources
тоже все получилось.
А метод
https://cloud-api.yandex.net/v1/disk/resources/move
ни работает ни в какую

$data = array( "from" => urlencode('/Music'), "path" => urlencode('/App'), );

$data = array( "from" => urlencode('/Music'), "path" => urlencode('/App'), );

Итого получаю ошибку

Array ( [message] => Ошибка проверки поля "from": Это поле является обязательным. [description] => Error validating field "from": This field is required. [error] => FieldValidationError )

Array ( [message] => Ошибка проверки поля "from": Это поле является обязательным. [description] => Error validating field "from": This field is required. [error] => FieldValidationError )

Поле from в запросе передается, почему не работает?

UPD:

$url = 'https://cloud-api.yandex.net/v1/disk/resources/move'; 		 		$data = array( 			"from"	=> urlencode('/Music'), 			"path"	=> urlencode('/App'), 			 		); 		$result = $this->sendQueryYaDisk($url,$data,'POST');  private function sendQueryYaDisk($methodAPI = '', $arrQuery = [], $methodQuery = 'GET')     {         if($methodQuery == 'POST') {             $fullUrlQuery = $methodAPI;         } else {             $fullUrlQuery = $methodAPI . '?' . http_build_query($arrQuery);         }          $ch = curl_init($fullUrlQuery);         switch ($methodQuery) {             case 'PUT':                 curl_setopt($ch, CURLOPT_PUT, true);                 break;              case 'POST':                 curl_setopt($ch, CURLOPT_POST, 1); 	            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arrQuery));                 break;              case 'DELETE':                 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');                 break;         }          curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: OAuth ' . $token]);         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);         curl_setopt($ch, CURLOPT_HEADER, false);         $resultQuery = curl_exec($ch);         curl_close($ch);          return (!empty($resultQuery)) ? json_decode($resultQuery, true) : [];     }

$url = 'https://cloud-api.yandex.net/v1/disk/resources/move'; $data = array( "from" => urlencode('/Music'), "path" => urlencode('/App'), ); $result = $this->sendQueryYaDisk($url,$data,'POST'); private function sendQueryYaDisk($methodAPI = '', $arrQuery = [], $methodQuery = 'GET') { if($methodQuery == 'POST') { $fullUrlQuery = $methodAPI; } else { $fullUrlQuery = $methodAPI . '?' . http_build_query($arrQuery); } $ch = curl_init($fullUrlQuery); switch ($methodQuery) { case 'PUT': curl_setopt($ch, CURLOPT_PUT, true); break; case 'POST': curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arrQuery)); break; case 'DELETE': curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); break; } curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: OAuth ' . $token]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $resultQuery = curl_exec($ch); curl_close($ch); return (!empty($resultQuery)) ? json_decode($resultQuery, true) : []; }

Дополнительно:

Покажите как именно происходит запрос

  • Lynn «Кофеман», добавил код в вопрос
  • https://yandex.ru/dev/disk/poligon/

    Тут написано что параметры должны быть в query, а вы их отправляете в body

  • Lynn «Кофеман», точно)) поправил. Еще проблема была в urlencode, надо было urldecode использовать а то пути к папкам не видел, все заработало, спасибо!
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Артём Dev Ответ

    Для того чтобы понять, почему не работает команда MOVE в API Яндекс.Диска, необходимо учитывать несколько возможных причин.

    1. Неправильный путь или имя файла: Убедитесь, что вы правильно указали путь к файлу или папке, которую хотите переместить, а также правильно указали путь для нового расположения файла или папки. Проверьте, что пути указаны без ошибок и соответствуют действительности.

    2. Недостаточные права доступа: Убедитесь, что у вас достаточные права доступа для перемещения файла или папки. Проверьте настройки доступа к данным файлам или папкам на Яндекс.Диске.

    3. Ошибки в коде: Проверьте ваш код на наличие ошибок или опечаток. Убедитесь, что вы правильно используете метод MOVE в API Яндекс.Диска и передаете все необходимые параметры.

    Пример кода на PHP для перемещения файла с помощью API Яндекс.Диска:

    $token = 'your_access_token';
    $source = '/path/to/source/file.txt';
    $destination = '/path/to/destination/newfile.txt';
     
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://cloud-api.yandex.net/v1/disk/resources/move?from='.$source.'&path='.$destination);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: OAuth '.$token]);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'MOVE');
    $response = curl_exec($ch);
    curl_close($ch);
     
    echo $response;

    $token = 'your_access_token'; $source = '/path/to/source/file.txt'; $destination = '/path/to/destination/newfile.txt'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://cloud-api.yandex.net/v1/disk/resources/move?from='.$source.'&path='.$destination); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: OAuth '.$token]); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'MOVE'); $response = curl_exec($ch); curl_close($ch); echo $response;

    Если после проверки всех вышеперечисленных причин проблема с перемещением файла все еще остается, рекомендуется обратиться к документации API Яндекс.Диска или обратиться за помощью на специализированные форумы или сообщества разработчиков.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно