Отправить файл на яндекс диск 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 для разработки:
После отправки формы, получим 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.
Специальные предложения
Но вот бы еще получить ссылку на скачку файла.
Правда ссылка получается какая - то огромная, интересно можно ли получить нормальную)
Может кому пригодится, пример того как скачать файл с яндекс диска:
Исправил эту строку и всё ОК).
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
СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ
Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.
Читайте также:
- Почему при установке драйвера видеокарты nvidia появляется ошибка продолжить установку невозможно
- Как сделать папку яндекс диск на рабочем столе
- Как восстановить данные с внешнего диска если она просит форматирование
- Цешка ц20 05 блок питания вместо батареек как подсоединить
- Технический специалист заменяет блок питания какие факторы он должен учитывать