Life Builder
532 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,754
1

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

26.09.2015, 17:40. Показов 14583. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Помогите пожалуйста программно скачать файлы с яндекс диска. Я что-то не понимаю, как это делается.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2015, 17:40
Ответы с готовыми решениями:

Ошибка загрузки с Яндекс Диска
хей программисты! вообщем надо сделать загрузку exe файла с яндекс диска. Все это я сделал,...

Как получить файлы с яндекс диска?
api.yandex.ru/disk/api/reference/content.xml по этому пути говорится что вот так указывается путь к...

Скачивание файла
Доброго времени суток. Ситуация следующая: 1. нужно написать клиент-серверное приложение через...

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

10
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
26.09.2015, 17:42 2
Лучший ответ Сообщение было отмечено sk007 как решение

Решение

sk007,
Вочпользуйтесь api https://github.com/yandex-disk... sdk-csharp
1
Life Builder
532 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,754
26.09.2015, 21:10  [ТС] 3
XRoy, Слишком это сложно. А по проще никак?
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
26.09.2015, 21:37 4
sk007, что может быть проще апи? Вам даже запросы к серверу писать и обрабатывать не надо
0
Life Builder
532 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,754
26.09.2015, 22:42  [ТС] 5
А с чем отправить запросы? webrequest не выводит окно с просьбой разрешить. Или я что-то неправильно делаю?
C#
1
var req = WebRequest.Create(string.Format("https://oauth.yandex.ru/authorize?response_type=token&client_id={0}&display=popup", id));
А потом пытаюсь прочитать это с помощью webReponse, но возвращает какую-то фигню
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
27.09.2015, 10:16 6
sk007,
Вы смотрели пример?
0
Life Builder
532 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,754
27.09.2015, 18:13  [ТС] 7
XRoy, там слишком много кода, не могу ничего разобрать.

Добавлено через 4 часа 27 минут
Токен, я все таки получил. Потом отправляю запрос вот так, только почему-то возвращается код 404.
Что я неправильно делаю?

C#
1
2
3
4
5
6
7
8
9
using (var client = new System.Net.WebClient())
            {
                client.Headers["Accept"] = "*/*";
                client.Headers["Depth"] = "1";
                client.Headers["Authorization"] = string.Format("OAuth {0}", token);
                string s = client.DownloadString("http://cloud-api.yandex.net/v1/disk/resources/download ? path = " + Uri.EscapeUriString(fileName));
                return s;
 
            }
0
870 / 720 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
27.09.2015, 18:15 8
sk007,
Зачем в адресе ? выделять пробелами?
0
Life Builder
532 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,754
27.09.2015, 20:24  [ТС] 9
пробелы убрал, теперь ошибка такая.
Код
Необработанное исключение типа "System.Net.WebException" в System.dll

Дополнительные сведения: Невозможно соединиться с удаленным сервером
Добавлено через 1 час 40 минут
Вроде ошибка только в написании пути к файлу

Добавлено через 15 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
static string ParseUrl(string resultString)
        {
            string pattern = "https://(.+?)\"";
            return Regex.Match(resultString, pattern).Value.TrimEnd('"');
        }
 
public static string DownloadUrl(string fileName="/", string localFileName="")
        {
            Auth();
 
            var req = WebRequest.Create(new Uri("https://cloud-api.yandex.net/v1/disk/resources/download?path=disk:/" + Uri.EscapeUriString(fileName)));
 
            ((HttpWebRequest)req).Accept = "*/*";
            req.Headers["Depth"] = "1";
            req.Headers["Authorization"] = string.Format("OAuth {0}", token);
            ((HttpWebRequest)req).Proxy = null;
            var resp = req.GetResponse();
 
            var text = new StreamReader(resp.GetResponseStream()).ReadToEnd();
 
                return ParseUrl(text);
        }
вот так, работает только если файл расположен в корне диска. Иначе возвращает код 404
0
75 / 80 / 51
Регистрация: 22.03.2013
Сообщений: 258
27.09.2015, 22:03 10
Попробуйте это,если не хотите использовать Yandex.API:
http://getfile.dokpub.com/yandex/
Вставляете ссылку в виде:
https://yadi.sk/i/byMUqoSLiw3Ki
И потом нажимаете на кнопку потом нажимаете ПКМ по ссылке Скачать и нажимаете на пункт Копировать ссылку

Но минус в том что ссылка действует до 6 часов

После того как получили ссылку используйте:
C#
1
2
WebClient webClient = new WebClient();
webClient.DownloadFile("Ссылка полученная на сайте", "Имя файла.formatfile");
1
Life Builder
532 / 496 / 374
Регистрация: 12.01.2011
Сообщений: 1,754
27.09.2015, 23:13  [ТС] 11
Спасибо. У меня все получилось. Последнее что я скидывал работает. Оказывается я неправильно писал путь к файлу
0
27.09.2015, 23:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2015, 23:13
Помогаю со студенческими работами здесь

Скачивание файла
Мне нужно чтобы когда я нажимаю на кнопку открывалась форма с прогресс баром и скачивался файл, но...

Скачивание файла
При скачивании файла, страницы, при первом запуске функции скачивание происходит очень долго. На...

Скачивание файла с FTP
Доброго времени суток, помогите пожалуйста, мне нужно что бы при открытия 2 формы(авторизаций)...

Скачивание файла с торрента
Здраствуйте мне интересен механизм обмена P2P а точнее торренты и реализация зкачивания с этих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru