Клуб API Диска

Просмотр файлов диска по ссылке

9 сентября 2015, 11:33

Добрый день! Подскажите пожалуйста, как через API можно получить ссылку на просмотр файла с диска, например .pdf, аналогично кнопки в веб-интерфейсе: https://yadi.sk/i/-crYuNZCixfDj ?

 

7 комментариев
Подписаться на комментарии к посту

Если нужно без авторизации пользователя, то:

берем ссылку для шаринга и подставляем в метод api в качестве значения параметра public_key

$file = file_get_contents('https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key=https://yadi.sk/i/pasdasdasd');

$arrFile = json_decode($file, true);

 

этот метод вернет ссылку на скачивание.
Есть еще метод:

 

$fileInfo = file_get_contents('https://cloud-api.yandex.net:443/v1/disk/public/resources?public_key=https://yadi.sk/i/pasdasdasd');

$arrfileInfo = json_decode($fileInfo, true);

 

Он вернет некоторую инфу о файле.
 

Хотя возможно я не так понял и эти методы тебе не помогут :)
можешь попробовать поиграться с полигоном Публичные файлы и папки

Мне по сути нужно сформировать верную ссылку для сервиса https://docviewer.yandex.ru/?url=. Обычная ссылка для скачивания не подходит.

И урл должен быть вида ya-disk:///disk/Добро Пожаловать.pdf&name=Добро Пожаловать.pdf&c=551a539b49a8

Вот что мне удалось.
1. Файл должен быть доступен по ссылке https://yadi.sk/i/in4-atO9izH8X и ты дергаешь метод как я писал выше:

 $fileInfo = file_get_contents('https://cloud-api.yandex.net:443/v1/disk/public/resources?public_key=https://yadi.sk/i/in4-atO9izH8X');

 

$arrfileInfo = json_decode($fileInfo, true);

В ответ ты получишь парамерт public_key

{"public_key":"l0nDQss/SvqbkU0JYx01b+HZ4Wv224hZWQeKttMgy4Y=",


Теперь надо сформировать сылку вида:

 

https://docviewer.yandex.ru/?url=ya-disk-public://l0nDQss/SvqbkU0JYx01b+HZ4Wv224hZWQeKttMgy4Y=&name=Добро Пожаловать2.pdf&c=55f17704be35

 


В этой ссылке он как раз и участвует, параметры name и с передавать необязательно.

Едиственное, я заметил, что в public_key есть знак "+" и если просто скопировать в браузер, то он его неправильно кодирует и файл не открывает. Надо посмотреть, как правильно енкодить public_key 

 

Спасибо за ответ! На днях по пробую. Если на php, то я думаю можно кодировать через urlencode().

Если для авторизованного пользователя, то я просто передаю следующий URL
https://docviewer.yandex.ru/?url=ya-disk%3A%2F%2F%2Fdisk%2F



И добавляю к нему path