Почему не работает MOVE в API Яндекс.Диска?
Пробую переместить папки на диске и получаю ошибку, хотя делаю все правильно.
Получил 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) : []; }
Дополнительно:
Покажите как именно происходит запрос
Тут написано что параметры должны быть в query, а вы их отправляете в body
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы понять, почему не работает команда 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;
Если после проверки всех вышеперечисленных причин проблема с перемещением файла все еще остается, рекомендуется обратиться к документации API Яндекс.Диска или обратиться за помощью на специализированные форумы или сообщества разработчиков.