1. Зарегистрировать приложение в Яндексе
- Переходим по ссылке https://oauth.yandex.ru/client/new
- Регистрируем новое приложение, выбираем платформу приложения "Веб-сервисы", в поле "Redirect URI" вставляем строку
https://oauth.yandex.ru/verification_code
. - В поле "Доступ к данным последовательно вставляем:
1234cloud_api:disk.app_foldercloud_api:disk.writecloud_api:disk.readcloud_api:disk.info
Нажимаем "Создать приложение".
- Переходим по ссылке
https://oauth.yandex.ru/authorize?response_type=token&client_id=ClientID_Созданного приложения
- Копируем и сохраняем токен, который будем использовать в обработке выгрузки.
2. Код обработки выгрузки
Отсюда https://infostart.ru/1c/articles/1278053/
Код вставляем в нужное место.
Код процедуры
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
// Процедура - Загрузить обновить файл на яндекс диске // // Параметры: // token - Строка, токен для авторизации // path - Путь, по которому следует загрузить файл. Например, /Fbar (Имя папки)/photo.png. Максимальная длина имени загружаемого файла — 255 символов; максимальная длина пути — 32760 символов. // Если файл необходимо загрузить в корень диска, то следует передать только имя файла в формате /photo.png // overwrite - булево, признак перезаписи файла. Учитывается, если файл загружается в папку, в которой уже есть файл с таким именем. // ПутьКФайлуДляЗагрузки - путь к файлу, который необходимо загрузить на диск // Процедура ЗагрузитьОбновитьФайлНаЯндексДиске(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 Тогда ВызватьИсключение Результат.ПолучитьТелоКакСтроку(); Иначе Сообщить("файл успешно загружен."); КонецЕсли; КонецЕсли; КонецПроцедуры |
[свернуть]