Отправить файл на яндекс диск api

Обновлено: 06.07.2024

PHP библиотека к API Яндекс диска

Неофициальное PHP SDK для сервиса Яндекс.Диск

  • полностью переписана логика работы с api
  • упращена работы с SDK
  • обновлено README

Запуск тестов из корня библиотеки:

SDK для работы использует WebDAV API Яднекс Диска. Для работы необходим OAuth-токен(например, AQACc1234LDE2f_123UIbouFHzfxxcvDI), который необходимо получить самостоятельно:

OAuth-токен должен иметь разрешённые права "Яндекс.Диск WebDAV API"

  • Работа с папками на Яндекс.Диске (создание, копирование, перемещение, удаление, публикация и т.д.)
  • Работа с файлами на Яндекс.Диске (создание, загрузка, скачивание, копирование, перемещение, удаление, публикация и т.д.)
  • Потоковая загрузка и скачивание файлов
  • Фрагментное скачивание файлов
  • \Leonied7\Yandex\Disk - используется для работы с диском, запрашивает основную информацию о диске и клиенте, а так же помогает работать с файлами и папками
  • \Leonied7\Yandex\Disk\Item\File - используется для работы с файлом

\Leonied7\Yandex\Disk\Entity\Result - после выполнения любого запроса к Яндекс.Диску можно получить информацию о результате

    - коллекция свойств - коллекция ошибочных свойств свойств
  • \Leonied7\Yandex\Disk\Decorator\CurrentElement - возвращает данные о элементе с входных путём
  • \Leonied7\Yandex\Disk\Decorator\CurrentElementCollection - возвращает данные о коллекции элемента с входных путём
  • \Leonied7\Yandex\Disk\Decorator\CurrentElementCollectionItem - возвращает данные о свойстве коллекции элемента с входных путём
  • \Leonied7\Yandex\Disk\Decorator\CurrentElementCollectionItemValue - возвращает значение свойства коллекции элемента с входных путём
  • \Leonied7\Yandex\Disk\Decorator\CurrentElementFailCollection - возвращает массив ошибочных коллекций элемента с входных путём
  • \Leonied7\Yandex\Disk\Decorator\ExplodeData - возвращает разбитую строку на массив типа "ключ => значение"
  • \Leonied7\Yandex\Disk\Stream\File - осуществляет работу с потоком файла, используется для записи/чтения файла

SDK поддерживает скачивание файлов несколькими способами:

Потоковое скачивание частями

Скачивание без потока

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

Превью может быть получена потоком, либо без потока

Так же первым параметром можно передать объект типа \Leonied7\Yandex\Disk\Collection\PropertyCollection для получения свойств для всех элементов.

Так же 2 и 3 параметром можно указать offset(смещение) и amount(количество) - для получение только необходимого диапозона элементов.

Пример написан для файла, но метод так же применим для директории

Так как для проверки существования используется метод запроса свойств, то по умолчанию Яндекс.Диск отдаёт свойства. При вызове метода has() можно передать объект типа \Leonied7\Yandex\Disk\Collection\PropertyCollection.

Если объект не передаётся, то выбираются все доступные свойства автоматически.

Получить пришедшие свойства можно следущим образом:

Результат будет хранить только успешно полученные свойства.

Для получения ошибочных свойств

Пример написан для файла, но метод так же применим для директории

По стандарту если файл уже существует по назначения, то он будет перезаписан. Для запрета перезаписи, необходимо передать вторым параметром false

Пример написан для файла, но метод так же применим для директории

По стандарту если файл уже существует по назначения, то он будет перезаписан. Для запрета перезаписи, необходимо передать вторым параметром false

Пример написан для файла, но метод так же применим для директории

Пример написан для файла, но метод так же применим для директории

Ранее успешно загруженные свойства можно получить с помощью $file->getProperties();

Результат будет хранить только успешно полученные свойства.

Для получения ошибочных свойств

Получение существующих свойств (Применимо для файла/директории)

Пример написан для файла, но метод так же применим для директории

Внимание. свойства приходят без значений и не могут быть получены через $file->getProperties();

Пример написан для файла, но метод так же применим для директории

Есть два способа изменения свойств у элемента:

Изменение переданных свойств

Добавляем свойства myprop и propmy с namespace mynamespace значения foo и bar соответственно. Удаляем свойство propprop

Сохранение заранее полученных свойств

Неименяемые свойства не сохраняются

Загружаем свойства myprop , propmy , propprop , quota-available-bytes

В загруженной коллекции есть свойства двух видов, изменяемые и неименяемые

Свойства приходят неизменяемыми для встроенных свойств Яндекс.Диска. Например quota-available-bytes будет неизменяемым

Для получения только изменяемых свойств коллекции

Так же можно узнать можно ли изменять свойтво через метод у свойства canChanged()

После этого сохраняем измененные значения

Пример написан для файла, но метод так же применим для директории

Пример написан для файла, но метод так же применим для директории

Пример написан для файла, но метод так же применим для директории

Запрос URL для загрузки следует отправлять с помощью метода GET.

Путь, по которому следует загрузить файл. Например, %2Fbar%2Fphoto.jpg . Максимальная длина имени загружаемого файла — 255 символов; максимальная длина пути — 32760 символов.

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

Признак перезаписи файла. Учитывается, если файл загружается в папку, в которой уже есть файл с таким именем.

false — не перезаписывать файл, отменить загрузку (используется по умолчанию);

true — удалить файл с совпадающим именем и записать загруженный файл.

Список свойств JSON, которые следует включить в ответ. Ключи, не указанные в этом списке, будут отброшены при составлении ответа. Если параметр не указан, ответ возвращается полностью, без сокращений.

Имена ключей следует указывать через запятую, а вложенные ключи разделять точками. Например: name,_embedded.items.path .

Путь, по которому следует загрузить файл. Например, %2Fbar%2Fphoto.jpg . Максимальная длина имени загружаемого файла — 255 символов; максимальная длина пути — 32760 символов.

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

Признак перезаписи файла. Учитывается, если файл загружается в папку, в которой уже есть файл с таким именем.

false — не перезаписывать файл, отменить загрузку (используется по умолчанию);

true — удалить файл с совпадающим именем и записать загруженный файл.

Список свойств JSON, которые следует включить в ответ. Ключи, не указанные в этом списке, будут отброшены при составлении ответа. Если параметр не указан, ответ возвращается полностью, без сокращений.

Имена ключей следует указывать через запятую, а вложенные ключи разделять точками. Например: name,_embedded.items.path .

*   Обязательный параметр

Формат ответа

Если запрос был обработан без ошибок, API отвечает кодом 200 OK . В теле ответа, в объекте Link, возвращается сгенерированный URL для загрузки файла. Если в течение 30 минут этот URL не будет запрошен, он перестанет работать, и нужно будет запросить новую ссылку.

Если запрос вызвал ошибку, возвращается подходящий код ответа, а тело ответа содержит описание ошибки.

URL. Может быть шаблонизирован, см. ключ templated .

Признак URL, который был шаблонизирован согласно RFC 6570. Возможные значения:

Можно найти множество применений Яндекс Диска на своем сайте, например, хранение бекапов и отчетов, обновление прайсов на сайте, выгрузка больших файлов с целью экономии места на хостинге и т.д.

В статье рассмотрим, как получить OAuth токен для доступа к методам диска и базовые операции с файлами и директориями с помощью CURL.

В форме указываем название приложения и нужные права для REST API:

Выбираем URL для разработки:

Выбираем URL для разработки

После отправки формы, получим ID созданного приложения:

Получаем ID созданного приложения

Далее нужно получить OAuth токен, для этого формируем URL и переходим по нему.

Разрешение на доступ к данным на Яндексе

Разрешаем и получаем токен.

Получаем токен

Теперь можно работать с API, передовая токен в заголовке «Authorization».

Получить инфо о Диске

Метод возвращает общую информацию о диске – доступный объем, адреса системных папок и т.п.,
Выполняется GET-запросом, возвращает объект JSON.

Получить список директорий файлов

Также отправляется методом GET и возвращает JSON.

Параметры:

  • path – путь к ресурсу относительно корневого каталога Диска;
  • fields – список ключей, которые следует включить в ответ;
  • limit – количество ресурсов которые вернуться в ответе, по умолчанию 20.

Создание папки

Запрос создания папки следует отправлять с помощью метода PUT. Если директория уже существует, API вернет ошибку.

Загрузка файлов на Диск

  • 202 – файл принят сервером.
  • 413 – размер файла превышает 10 ГБ.
  • 500, 503 – ошибка сервера, попробуйте повторить загрузку.
  • 507 – для загрузки файла не хватает места на Диске пользователя.

Скачивание файла с Диска

Чтобы скачать файл к себе на сервер нужно запросить URL ресурса, отправив путь к скачиваемому файлу. Далее скачать файл по полученной ссылке.

Удаление файла или папки

Удаление происходит методом DELETE, если не указать параметр permanently=true , то файлы будут перемещены в корзину.

Если удаляется непустая папка, то она может удаляться в течение произвольного времени, поэтому API отвечает кодом 202.

Данный программный код тестировался на версии платформы 8.3.17.1549.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Спасибо, работает отлично.
Но вот бы еще получить ссылку на скачку файла.

Правда ссылка получается какая - то огромная, интересно можно ли получить нормальную)

Может кому пригодится, пример того как скачать файл с яндекс диска:

Исправил эту строку и всё ОК).

HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/resources/upload?path=" + path + "& overwrite clear">

Просмотры 4073

Загрузки 0

Рейтинг 57

Создание 12.08.20 14:31

Обновление 19.09.20 20:57

№ Публикации 1278053

Тип файла Нет файла

Конфигурация Не имеет значения

Операционная система Не имеет значения

Вид учета Не имеет значения

Доступ к файлу Бесплатно (free)

Код открыт Да


См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020 4474 Eugen-S 23

Что за ? в коде, или Секретный оператор в 1С

Инкремент, модуль и прочая магия, которая скрыта под символом "?"

21.10.2021 8068 SeiOkami 40

Полезные примеры СКД, ч.2

Еще несколько примеров решения задач в СКД.

06.04.2021 10750 Neti 8

Обзор полезных методов БСП 3.1.4

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

25.03.2021 40710 rayastar 51

27.01.2016 85723 Serginio 116

Звуковое управление в 1С 8.3

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021 7191 velemir 33

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020 8897 comol 31

Форма выбора (подбор) в управляемых формах

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020 78395 user5300 19

Использование программных перечислений, ч.1: строковые константы Промо

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016 41117 unichkin 74

Программная работа с настройками СКД

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020 65724 ids79 26

[СКД] Программное создание схемы компоновки данных

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020 43712 John_d 22

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

30.12.2019 35415 kuzyara 38

Вспомогательные инструкции в коде 1С Промо

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018 36133 tormozit 106

Полезные процедуры и функции для программиста

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019 39749 HostHost 41

Таблица значений. Нюансы

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019 53077 Yashazz 56

12.09.2019 25381 YPermitin 27

Оформление и рефакторинг сложных логических выражений Промо

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012 82857 tormozit 131

[Шпаргалка] Программное создание элементов формы

Программное создание практически всех популярных элементов формы.

06.09.2019 102500 rpgshnik 75

Агрегатные функции СКД, о которых мало кто знает

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019 77788 ids79 56

Регистры бухгалтерии. Общая информация

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019 46622 YPermitin 25

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007 54437 tormozit 51

Три костыля. Сказ про фокусы в коде

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019 30218 YPermitin 81

Иерархия без "В ИЕРАРХИИ"

22.08.2019 15059 ildarovich 24

Отслеживание выполнения фонового задания

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

17.08.2019 45244 ids79 22

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017 51199 tormozit 74

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019 152411 ids79 75

Фоновое выполнение кода в 1С - это просто

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019 60808 avalakh 26

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019 105731 ids79 17

Выгрузка документа по условию Промо

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий. А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019 18025 m-rv 3

Обработчики событий при записи объектов. Зачем и что за чем?

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта. Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019 112490 AlbinaAAA 48

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

Читайте также: