jack-theripper / yandex

PHP SDK для работы с Яндекс Диском yandex disk
MIT License
127 stars 39 forks source link

Запрос URL для загрузки #56

Closed artysold closed 7 months ago

artysold commented 7 months ago

Добрый день. Спасибо за Вашу работу!

Реализую интеграцию Yandex-диска в своё приложение, в рамках работы которого пользователь имеет возможность через web-интерфейс приложения загружать файлы со своего устройства на Yandex-диск.

На данный момент загружаемый пользователем файл сначала сохраняется на сервере приложения, откуда дальше отправляется на Yandex-диск. Такая логика хорошо работает на небольших файлах, но на крупных файлах время ожидания окончания загрузки файла получается очень большим, т.к. файл сначала должен дойти до сервера приложения, и только потом отправиться на Yandex-диск. Кроме того, такая логика подразумевает наличие на сервере приложения большого кол-ва свободного дискового пространства для сохранения пользовательских файлов перед отправкой их на Yandex-диск.

Решение этих проблем видится в прямой отправке пользовательских файлов сразу на Yandex-диск. Для этого в документации Yandex-диска предусмотрен "Запрос URL для загрузки" (https://yandex.ru/dev/disk-api/doc/ru/reference/upload#url-request). Нужно чтобы при загрузке пользовательского файла клиентская сторона приложения сделала запрос на сервер, получила в ответ URL для загрузки файла на Yandex-диск, после чего отправила файл по полученной ссылке.

Подскажите, пожалуйста, могу ли я выполнить запрос URL для загрузки файлов через Ваш пакет (если да, то как), или придётся реализовать эту логику самостоятельно? Также буду признателен за комментарии разработчиков, столкнувшихся с аналогичной задачей.

jack-theripper commented 7 months ago

Добрый день.

https://github.com/jack-theripper/yandex/blob/master/example/manual_request.php

jack-theripper commented 7 months ago

Полагают что так

$uri = $disk->getUri()
    ->withPath( $disk->getUri()->getPath() . 'resources/upload') 
    -> withQuery(http_build_query(['path' => 'путь куда сохранить файл на диск/файл.ехт'])

$req = new Request ($uri, 'GET');

$response = $disk->send($req);

$result = json_decode($response->getBody());
artysold commented 7 months ago

Полагают что так

$uri = $disk->getUri()
    ->withPath( $disk->getUri()->getPath() . 'resources/upload') 
    -> withQuery(http_build_query(['path' => 'путь куда сохранить файл на диск/файл.ехт'])

$req = new Request ($uri, 'GET');

$response = $disk->send($req);

$result = json_decode($response->getBody());

Спасибо!