Имя: Пароль:
1C
 
Удаление файла с ЯндескДиска
0 Spiritonus
 
25.05.25
20:55
Пытаюсь удалить файл с Яндекс диска согласно инструкции  от Яндекса https://yandex.ru/dev/disk-api/doc/ru/reference/delete#uspeshnyj-otvet

Процедура УдалитьФайлНаЯндексДиске(token, path) Экспорт
//   https://cloud-api.yandex.net/v1/disk/resources
//? path=<путь к удаляемому ресурсу>
//& [permanently=<признак безвозвратного удаления>]
//& [md5=<MD5 удаляемого файла>]
//& [force_async=<признак перезаписи>]
//& [fields=<свойства, которые нужно включить в ответ>]

    path = "disk:" + СтрЗаменить(path,"/","%2F");
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
    Заголовки.Вставить("Authorization","OAuth " + token);
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
    
    HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/resources?path=" + path +"&permanently=true"
    , Заголовки);
    
    Соединение = Новый HTTPСоединение("cloud-api.yandex.net",,,,,, ЗащищенноеСоединение);
    
    Результат = Соединение.Получить(HTTPЗапрос);    
КонецПроцедуры

Результат возвращает 200,  а не 204. В чем может быть ошибка.

path = "disk:%2Ffinance%20lando%2FОстатки_23-05-2025.xlsx"
HTTPЗапрос.АдресРесурса = "/v1/disk/resources?path=disk:%2Ffinance%20lando%2FОстатки_23-05-2025.xlsx"
1 Волшебник
 
25.05.25
22:31
файл удаляется?
2 Волшебник
 
25.05.25
22:38
204 No Content — сервер успешно обработал запрос и такого содержимого нет, вроде файл удалён
3 Garykom
 
гуру
25.05.25
23:23
path*
Путь к удаляемому ресурсу. Например, $2Ffoo%2Fphoto.png.

Путь в значении параметра следует кодировать в URL-формате.


1. путь кривой
2. херово закодирован
4 Spiritonus
 
25.05.25
23:29
(1) Нет
5 Spiritonus
 
25.05.25
23:30
(3) Что именно не так, есть аналогичная процедура с загрузкой на диск, там все работает отлично

Процедура ЗагрузитьОбновитьФайлНаЯндексДиске(token, path, overwrite, ПутьКФайлуДляЗагрузки)
    
    //Параметры Get запроса для получения URL {{
    path = "disk:" + СтрЗаменить(path,"/","%2F");
    overwrite = ?(overwrite, "true", "false");
    //Параметры Get запроса для получения URL }}
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
    Заголовки.Вставить("Authorization","OAuth " + token);
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено);
    
    //Получение URL для загрузки {{
    HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/resources/upload?path=" + path + "&overwrite=" + overwrite, Заголовки);
    
    Соединение = Новый HTTPСоединение("cloud-api.yandex.net",,,,,, ЗащищенноеСоединение);
    
    Результат = Соединение.Получить(HTTPЗапрос);// GET запрос для получения URL
    //Получение URL для загрузки }}
    
    Если Результат.КодСостояния <> 200 Тогда
        
        ВызватьИсключение "Ошибка при получении URL для загрузки." + Символы.ПС + Результат.ПолучитьТелоКакСтроку();
        
    Иначе
        
        Сообщить("URL для загрузки файла получен успешно." + Символы.ПС + Результат.ПолучитьТелоКакСтроку());
        
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Результат.ПолучитьТелоКакСтроку());
        
        СоответствиеРезультат = ПрочитатьJSON(ЧтениеJSON, Истина);
        
        СсылкаДляЗагрузки = СоответствиеРезультат.Получить("href");
        
        СсылкаДляЗагрузки = СтрЗаменить(СсылкаДляЗагрузки, "https://", "");
        
        ИмяСервера = Лев(СсылкаДляЗагрузки, СтрНайти(СсылкаДляЗагрузки, "/") -1);
        
        СсылкаДляЗагрузки = СтрЗаменить(СсылкаДляЗагрузки, ИмяСервера, "");
        
        //Загрузка файла на полученный URL {{
        HTTPЗапрос = Новый HTTPЗапрос(СсылкаДляЗагрузки, Заголовки);
        HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(ПутьКФайлуДляЗагрузки));
        
        Соединение = Новый HTTPСоединение(ИмяСервера,,,,,, ЗащищенноеСоединение);
        
        Результат = Соединение.Записать(HTTPЗапрос);// PUT запрос        
        //Загрузка файла на полученный URL }}
        
        Если Результат.КодСостояния <> 201 Тогда
            
            ВызватьИсключение Результат.ПолучитьТелоКакСтроку();
            
        Иначе
            
            Сообщить("файл успешно загружен.");    
            
        КонецЕсли;
                            
    КонецЕсли;
    
КонецПроцедуры