Ускорить webdav windows 10

Обновлено: 04.07.2024

Освободи Себя WebDAV Протокол (веб-распределенная разработка и управление версиями) разработан IETF, это протокол, который позволяет нам легко сохранять, редактировать, копировать, перемещать и обмениваться файлами с веб-серверов. Благодаря этому протоколу мы можем работать с файлами непосредственно на веб-сервере, как если бы это был Samba или FTP-сервер. В настоящее время большинство современных операционных систем, таких как Windows, Linux или macOS, разрешить поддержку WebDAV, чтобы файлы на сервере WebDAV отображались как хранящиеся в каталоге. Хотите подробно узнать, как работает этот протокол?

Что такое WebDAV и для чего он нужен?

WebDAV - это протокол, который позволяет нам сохранять файлы, редактировать их, перемещать и делиться ими на веб-сервере нам не нужно будет использовать другие протоколы для обмена файлами в локальной сети или Интернете, такие как Samba, FTP или NFS. Цель WebDAV состоит в том, чтобы вы могли работать непосредственно на веб-сервере без необходимости использования дополнительных протоколов для удаленной (или локальной) обработки файлов. Этот протокол позволяет веб-серверам выступать в качестве сетевых дисков на нашем ПК.

Конфигурация WebDAV на сервере QNAP NAS

Если вы решите настроить определенные разрешения для WebDAV, вам придется настроить его в «Общие папки» QNAP.

Мы идем в " Панель управления / привилегии / общие папки »И нажмите« Изменить разрешения для общей папки », чтобы позже отобразить параметр« Выберите тип разрешения »и выберите» Доступ к WebDAV «. Этот параметр доступен только для выбора, если мы выбрали «Разрешения WebDAV» на сервере WebDAV, в противном случае он не появится.

Мы редактируем разрешения папок по своему желанию и нажимаем «Применить».

На этом этапе мы правильно настроили сервер WebDAV на нашем сетевом хранилище QNAP, теперь мы собираемся настроить клиент WebDAV, который по умолчанию установлен в Windows, для подключения к серверу.

Конфигурация клиента WebDAV в Windows 10

  • 0: Обычная проверка подлинности отключена.
  • 1. Обычная проверка подлинности включена только для SSL-соединений.
  • 2. Обычная проверка подлинности позволяет использовать SSL и не-SSL соединения.



После перезапуска мы переходим к «Компьютер» и щелкаем правой кнопкой мыши на « Добавить местоположение в сети ».


Следуем за мастером, выбирая « Выберите другое место сети ».



Как только мы нажмем «Далее», появится экран для ввода учетных данных пользователя, после ввода имени пользователя и пароля он укажет, что соединение правильное, и мы сможем дать этому сетевому местоположению имя.


Когда мы дадим ему имя, мы нажмем «Готово», чтобы завершить работу мастера добавления сетевых местоположений.

В настоящее время мы сможем получить доступ к нашему серверу через протокол WebDAV, как вы можете видеть ниже:


Как вы видели, протокол WebDAV очень легко настроить, а также использовать в операционных системах Windows, хотя мы должны помнить, что он без проблем совместим с Linux и macOS.

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

Что такое протокол WebDav

Подключение облачных дисков по протоколу WebDav в среде Windows

Клиентские программы облачных хранилищ, интегрирующие их в ОС Windows, обычно работают по принципу загрузки содержимого облака на локальный диск компьютера и синхронизации затем данных с облаком по итогу внесения пользователем каких-то изменений. В этом плане подключение по протоколу WebDav отличается несколько иным механизмом: мы получаем доступ к своим данным в облаке по сети в режиме реального времени. И можем эти файлы копировать, перемещать, переименовывать, удалять. И лишь если нам нужно просмотреть или отредактировать файл в какой-то системной программе, этот файл загружается в системный кэш и уже оттуда потом выгружается снова в облако.

Тогда как родные клиентские приложения при интеграции в среду Windows облачных дисков реализуют в контекстном меню проводника разные операции облаков – типа быстрой загрузки файлов в облако или же получения ссылок для публичного доступа, подключение к облачному содержимому по протоколу WebDav ограничивается только обычными операциями управления. Но эти обычные операции управления мы можем проводить с любым удобным нам файловым менеджером. Хоть это будет проводник Windows, хоть это будет функциональный файловый менеджер с массой продвинутых возможностей по работе с данными, которые будут распространятся и на облачные диски, подключённые по WebDav.

Подключение облачных дисков по протоколу WebDav в среде Windows

Клиентское приложение каждого отдельного облачного хранилища для обеспечения своих задач нуждается в фоновой работе. А скопление таких приложений (если нужно системно работать с несколькими облачными хранилищами) и их фоновая работа по синхронизации разных данных могут нагружать ресурсы слабых компьютеров. Тогда как подключение с использованием протокола WebDav в среде Windows реализуется единым системным процессом. Так, компания Microsoft продвигает протокол WebDav, и он давно входит в число штатного функционала Windows.

По протоколу WebDav мы сможем подключить несколько своих аккаунтов в одном и том же облачном хранилище. WebDav – это чисто технический функционал, он лишён влияния сковывающей корпоративной политики, как многие клиентские приложения облаков. Немногие из них предусматривают одновременную интеграцию в Windows нескольких облачных дисков с использованием пользовательского мультиаккаунта. Облачным сервисам выгоднее продвигать идею увеличения за доп. оплату облачного дискового пространства, чем создать возможность доступа к бесплатным объёмам в рамках пользования несколькими аккаунтами.

Системный способ подключения облака по WebDav

Подключение облачных дисков по протоколу WebDav в среде Windows

В проводнике Win 8.1 и 10 просто открываем на Ribbon-панели вкладку «Компьютер». И здесь выбираем дважды «Подключить сетевой диск».

Подключение облачных дисков по протоколу WebDav в среде Windows

Дальнейшие действия будут идентичны для всех актуальных версий – Windows 7, 8.1 и 10. Перед нами появится окно подключения сетевого диска. В нём можем выбрать какую-угодно букву для облачного диска. И далее в графе «Папка» вписываем адрес подключения облака по WebDav. Давайте мы рассмотрим всё это с вами на примере подключения OneDrive. В графу «Папка» нам нужно вписать сетевой адрес типа:

Где наш ID – это наш идентификатор, который отображается в адресной строке веб-интерфейса OneDrive.

Подключение облачных дисков по протоколу WebDav в среде Windows

После ввода адреса жмём кнопку «Готово».

Подключение облачных дисков по протоколу WebDav в среде Windows

Дальше нам предстоит авторизоваться в облачном хранилище. Ну и чтобы OneDrive у нас постоянно само подключалось при запуске системы ОС Windows, мы активируем чекбокс «Запомнить учётные данные».

Подключение облачных дисков по протоколу WebDav в среде Windows

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

Подключение облачных дисков по протоколу WebDav в среде Windows

Ну а если данный сетевой диск станет ненужным, тогда в этом же контекстном меню можно отключить его.

Подключение облачных дисков по протоколу WebDav в среде Windows

При подключении облака по WebDav переменным значением является адрес сетевого диска, указываемый в графе «Папка».

Для Яндекс.Диска, например, этот адрес будет:

Адрес нужного вам облачного хранилища элементарно можно узнать в Интернете, в частности, на сайте самого хранилища.

Что делать, если облако не поддерживает WebDav

Если облачное хранилище не поддерживает подключение по протоколу WebDav, ну тут уж придётся довольствоваться официальным клиентским его приложением. Ну либо искать пути решения вопроса. Например, Google Drive можно подключить как сетевой диск по WebDav с использованием сервиса-посредника DAV-pocket service. Но есть способ чуть проще и более универсальный – подключение с помощью специальных программ, работающих по части интеграции в среду Windows нескольких облачных сервисов. Таких программ много: RaiDrive, CloudBuckIt, MultCloud, FileCloud, ExpanDrive, WebDrive, Mountain Duck и пр. Все они по большей части платные, если не полностью, то как минимум условно-бесплатные. Из них всех сносные условия использования у программы Air Live Drive.

Чтобы подключить облако с помощью Air Live Drive, установим и запустим программу. В её окне жмём «Добавить облачный диск».

Подключение облачных дисков по протоколу WebDav в среде Windows

Выбираем облако из числа поддерживаемых, пусть это будет, например, Google Drive.

Подключение облачных дисков по протоколу WebDav в среде Windows

Авторизуемся с помощью Google-аккаунта в окне браузера.

Подключение облачных дисков по протоколу WebDav в среде Windows

Даём разрешение на доступ программы Air Live Drive к содержимому Google Drive.

Подключение облачных дисков по протоколу WebDav в среде Windows

Успешная авторизация завершается таким вот окошком.

Подключение облачных дисков по протоколу WebDav в среде Windows

И в окне Air Live Drive у нас появляется первое подключение – подключение диска Google Drive. Здесь можем выбрать для него букву и жмём «Подключить».

Подключение облачных дисков по протоколу WebDav в среде Windows

Ну и содержимое Google Drive отобразится в проводнике Windows.

Подключение облачных дисков по протоколу WebDav в среде Windows

По этому принципу можно подключить другие облачные хранилища, которые будут отображаться в среде Windows как локальные диски. В окне Air Live Drive каждое подключённое облако имеет кнопку в виде шестерёнки, это настройки подключения. В этих настройках можем назначить, чтобы облако подключалось само каждый раз при запуске Windows. Можем сделать так, чтобы оно подключалось только с правами чтения данных. А можем сменить отображаемое в проводнике название облака или покопаться в настройках кэша подключения. Всё это уже индивидуальные настройки.

Подключение облачных дисков по протоколу WebDav в среде Windows

А на этом пожалуй все. Увидимся на следующих страницах блога. А пока.. Пока.

Все знают, как пользоваться Яндекс.Диском через веб-интерфейс. А можно скачать и установить приложение Яндекс.Диск, но мне больше нравится другой способ – подключить Яндекс.Диск как дополнительный сетевой диск. Можно, например, завести общий аккаунт с другом и иметь один диск на двоих. Как это сделать? Смотрите инструкцию ниже.

Нажмите правой кнопкой мыши на пункте Этот компьютер и выберите Подключить сетевой диск.

WebDAV Webdav, Яндекс Диск, Длиннопост

WebDAV Webdav, Яндекс Диск, Длиннопост

Включите опцию Восстанавливать подключение при входе в систему.

Введите логин и пароль вашей учетной записи на Яндексе

Включите опцию Запомнить учетные данные и нажмите ОК.

WebDAV Webdav, Яндекс Диск, Длиннопост

Файлы Яндекс.Диска будут доступны на созданном сетевом диске. Пользутесь!

т.е. ты просто опубликовал страницу помощи с яндекса?

вебдав - тормозная технология.

а мне RaiDrive больше нравится.

Там показывает нормальную информацию по занято/свободно в отличии от вышеупомянутого подключения

Иллюстрация к комментарию

прикольно то, что этот вебдав отлично работает в линуксе (консольном) на сервере на ВПСке. Использую его для бэкапов.

Ну ну. Если влетит шифровальщик: привет данным на я.диске

Копипаст хелпа яндекса в горячем? Серьёзно?

Но стоит помнить, что WebDAV - это не синхронизация, а просто заливание файлов в облака. На компе локальные копии при таком способе не сохраняются.

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

Главное не удалить нужный файл, так как в отличии от приложения он не отправится в корзину Я.Диска, а удалится навсегда.

так вроде яндекс диск тоже самое и сам делает, только вместо "сетевого диска" он летающую тарелку оставляет, способ хуйня какая-то

Всё тупит и тормозит. Пытаюсь посмотреть размер папки с сотней файлов - каждый раз показывает разный размер - то 2 гига, то 4,5, то 800 метров. Пытаюсь скачать её на рабочий стол - появляется окно начала копирования (там где вычисляется размер папки), доходит до какого-то произвольного размера папки и пропадает. Для мелких одиночных файлов сойдёт, но для серьёзных объёмов непригодно от слова совсем.

Только есть нюанс - яндекс через WebDAV тормозной. Если файлов много - есть риск повесить эксплорер.

Вот и подросло поколение. грустно чего-то. пойду накачу полтишочек.

Что бы плохого не готовили о мейл ру, но у них удобное приложение для монтирования облачных хранилищ "диск о" и поддерживает кучу сервисов :мейл ру, гугл драйв, яндекс, дробокс и тд. Не реклама, сам решил воспользоваться дня 3 назад наверное.

Если тянуть по вебдаву большие файлы, оно может ругаццо ошибкой 0x800700df

да и по номеру ошибки норм гуглится

Спасибо за инфу, очень удобно)

С google drive что-то подобное можно сделать?

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

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

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

Крайне не рекомендую этим пользоваться во всяком случае встроенном в 10-ку.

в Украине походу не фурычит из-за запретов

А зачем вам общий Я. Диск с другом? Чтобы общие фотки тёток юзать?"

А как пароль восстановить от яндекса без фото с паспортом? p.s. захожу через вк

Вот бы кто подсказал, как место на нём бесплатно увеличить, было бы дело.

Советую, там место не ограничено

А подскажите, такое же но с гугл диском можно сделать? Если да, то как? Диск О от мейл прикольнее. Шустрее вебдав работает. Хотя думаю технология та же, но есть тихая закачка. Файлы скинулись сразу и потихоньку грузятся. Скорости обмена хватает на быстрое открытие фото и видео. Фуллхд не пробовал.

Просто спасибо. снес ЯД =)))

О воспользуюсь, спасибо!

К сожалению не знал.

Все, хорошо, но есть парочка проблем. Скорость доступа зависит от интернета, плюс сам диск довольно тормозной. Такое ощущение, что там обычный жесткий диск, а не ссд. Не большое пространство, ради 10 гигов.. Вот, если бы 1 ТБ, тогда еще можно.. Ну и самое главное, возможность потерять пароль/логин и бан от яндекса. Вот последнее самое серьезное, не знаю почему об этом никто не говорит, но файлы в этом случае они восстановить не дадут. Было раз 20 - вы нарушили условия пользования, а что за условия не говорят.. Не доверяю я этим облакам..

Webdav от яндекс диска помер, можете забыть, он делает вид, что работает, но скорость никакая, около мегабита в минуту, пользоваться невозможно.

хорошая идея, забрал

Вопрос, что хранить на тех 25 ГБ что Яндекс дает бесплатно?

но это под Линухом.

А вот мне не понятно, у меня куплен 1 ТБ на ЯД, создал диск, показывает что у меня всего 476 ГБ, из них больше 200 свободно, хотя в интерфейсе у меня свободно 13 Гб всего.

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

Отдавать свои файлы Яндексу и мэил ру в нашей стране, все равно что голым ходить по улице

Ребят, подскажите пожалуйста:

Купил ssd, форм-фактора 2280 на 1Тб.

Поставил, а система не видит. И через "Администрирование" не видит.

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

прикольно - но не работает

Иллюстрация к комментарию

Выглядит как попытка завладеть чужими данными. БУГАГА!


Яндекс закрывает WebDAV на диске для сторонних приложений и не признается в этом.

Летом приобрел 1Тб пространства на Яндекс.Диске с целью организовать хранение бэкапов домашних документов. И таки организовал при помощи кросплатформенной Duplicati, настроив работу с диском по WebDAV.

Однако недавно обнаружил, что некоторые бэкапы не создаются. Причем последний удачный бэкап для одной из копий был аж 5 октября.

Обследование показало что зависает загрузка бэкапов в облако. В начале грешил на программу, пару раз обновлял, менял настройки. ничего не давало результатов. Но затем протестил соединение WebDAV с помощью двух других приложений (nemo и nautilus) и обнаружил что подвисает аплойд и в них.

Началась переписка с поддержкой диска:

Яндекс закрывает WebDAV на диске для сторонних приложений и не признается в этом. Яндекс Диск, Резервное копирование, Webdav, Длиннопост

В последующем общении Фёдор продолжал уверять меня, что проблема именно в моем ПО, не смотря на все мои возражения:

Яндекс закрывает WebDAV на диске для сторонних приложений и не признается в этом. Яндекс Диск, Резервное копирование, Webdav, Длиннопост

Но пока я ждал ответа выяснилось, что я далеко не один такой. На одном небезызвестном ресурсе проблема уже давно обсуждается в теме "Яндекс Диск и Webdav". О чем я и сообщил Фёдору.

Яндекс закрывает WebDAV на диске для сторонних приложений и не признается в этом. Яндекс Диск, Резервное копирование, Webdav, Длиннопост

Ну хорошо хоть возврат средств сделали (пока не сделали, но обещают).

Больше всего в истории поражает то, с каким настойчивым упорством ТП открещивается от того что проблема на их стороне, намекая видимо на то, что десятки разработчиков внесли в свои проекты правки, приведшие к проблемам в работе с Я.Д.

А заверения в том, что Яндекс поддерживает WebDAV полноценно дают понять, что в ограничении скорости аплойда нет никаких технических причин, и скорость режется исключительно по юзерагенту. Таким образом Яндекс подтверждает, что он чхал на потребности пользователей и сделает все чтобы перевести их на своё ПО. ну или заставить отказаться от использования услуг компании.

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

WebDAV

Изначально DAV разрабатывался для совместного создания и редактирования веб-страниц, но в процессе использования он нашел применение в качестве сетевой распределенной файловой системы, эффективной для работы в высоконагруженной среде и поддерживающей неустойчивое соединение. Таким образом, DAV подходит для управления файлами на веб-серверах, иными словами, реализации облачных хранилищ информации, где и был применен. С его помощью можно выполнять основные операции над файлами, содержащимися на сервере, проводить расширенные операции, как то: блокировка, получение метаданных, контроль версий и другие. Этот протокол стал заменой для старого доброго FTP, чье время подошло к концу.

WebDAV предоставляет семь команд:

  • PROPFIND — получение свойств объекта на сервере в формате XML;
  • PROPPATCH — изменение свойств объекта;
  • MKCOL — создать папку на сервере;
  • COPY — копирование на стороне сервера;
  • MOVE — перемещение на стороне сервера;
  • LOCK — заблокировать объект;
  • UNLOCK — снять блокировку с объекта.

Таким образом, WebDAV позволяет изменять свойства хранящихся на сервере объектов, выполнять поиск с учетом свойств, блокировать объект (в нашем случае — файл) для организации возможности его редактирования только одним пользователем в распределенной среде, в которой доступ могут иметь много юзеров, управлять версиями файлов (посредством унаследованных команд check -in, -out), а также производить расширенный контроль доступа к файлам на основе списков.

Кроме того, WebDAV поддерживает унаследованные команды: GET — для скачивания файла, PUT — для заливки на сервер и DELETE — для удаления объекта. Мы не будем рассматривать все команды; в моем случае для реализации функционала утилиты мне понадобилось лишь четыре.

Ныне в разработке протокола участвуют Microsoft, Mozilla, Novell, IBM и другие. Поэтому не стоит удивляться тому, что поддержка WebDAV присутствует во многих продуктах Microsoft (в том числе Internet Explorer, проводнике, веб-сервере IIS и других), браузере Mozilla Firefox, продуктах фирмы Novell, IBM. Дополнительно, с помощью установки плагинов «подружить» с протоколом можно Total Commander и FAR.

Как уже было упомянуто, в Windows удаленное хранилище WebDAV можно подключить в проводник как дополнительный диск. Подобным образом можно поступить в OS X, организовав подключение к WebDAV-серверу как дополнительную директорию в обозревателе Finder.

Возможные решения

Передо мной стояла задача подключиться и организовать работу с данными на двух файловых хранилищах: Яндекс.Диск и Dropbox. Оба эти сервиса поддерживают работу по протоколу WebDAV. Регистрируя почту на Яндексе, ты автоматом получаешь доступ к 10 Гб облачного хранилища, к которому можно подключиться не только через стандартный клиент, но и с помощью сторонней тулзы (например, своей программы) посредством протокола WebDAV. При регистрации на Dropbox ты получаешь 5 Гб дискового пространства, которое можно использовать через стандартный клиент. Однако, чтобы получить доступ к хранилищу по WebDAV, надо пройти дополнительную регистрацию. В итоге, как выяснилось, этот доступ не бесплатный, тем не менее после регистрации дается свободный доступ на две недели. Размеры хранилищ можно увеличивать: или через доплату, или с помощью участия в разных акциях, проводимых сервисами, например находить баги и сообщать о них разработчикам.

Когда мне понадобилось написать программу для работы по WebDAV-протоколу, я первым делом заглянул в Win32 API, чтобы посмотреть, есть ли там функции для этого, подобно имеющимся для работы с FTP. Забегая вперед, отмечу, что сроки у меня стояли сжатые, поэтому использовать функции уровня API я не собирался. Как и следовало ожидать, в Win32 API, начиная с версии для Windows Vista, входит WebDAV API. В него входит одно перечисление, три структуры и набор функций. Я подумал, что это хороший знак, поскольку на основе стандартного API непременно имеются более высокоуровневые решения и мне не придется засиживаться с функциями API-интерфейса.

Тут под руку попалась Delphi XE3, и я решил проверить, какие инструменты для работы с протоколом WebDAV есть у нее. Оказалось, что в ней (на вкладке Indy Clients палитры компонентов) есть компонент IdWebDav. Я уже подумал, что на этом исследования закончились… Но обнаружилось, что этот компонент ни в какую не коннектится к Яндексу (Яндекс.Диск был для меня более приоритетным сервисом, поэтому все тесты я в первую очередь проводил на нем).

где stream — файловый поток, предварительно созданный для чтения.

Подключаемся к Yandex.disk + создаем коллекцию

Следующим действием напишем небольшую программу, способную выполнить четыре операции: создать папку на удаленном хосте, загрузить объект, скачать объект и удалить объект. Этих операций достаточно для большинства приложений, решающих производственные задачи. Для простоты создадим WinForms-приложение. В паре слов расскажу о своей проге. Она представляет собой консольное приложение, запускаемое батником по расписанию. Ее основное действие — это заливка файлов на удаленный хост, при этом в ее задачи входит корректная обработка маски для выбора файлов, а также обработка путей, по которым они размещены, плюс правильное создание в облаке иерархии папок, подобной размещенной на локальном диске. Кроме того, поскольку программа работает в автоматическом режиме, она создает файл с логами. В нашей сегодняшней программе мы опустим эти действия (очевидно, что они не относятся к теме) и сконцентрируемся на протоколе WebDAV.

01

WebDAV-протокол не позволяет создать несколько вложенных папок за один запрос, например /folder1/folder2/; можно создать только одну папку: /folder1/. Если каталог существует, а отправленный запрос пытается создать одноименную директорию, в таком случае сервер сгенерирует исключение, которое надо перехватить конструкцией try/catch. В приведенном выше примере не происходит обработка исключений, поэтому если будешь использовать этот код в своем приложении, то не забудь ее добавить. Если необходимо узнать, существует каталог или нет, то для этого можно воспользоваться запросом PROPFIND, а потом получить и пропарсить ответ сервера, содержащий инфу в формате XML о имеющихся на сервере объектах. Но это получится долго, и, на мой взгляд, лучше использовать запрос MKCOL и в случае присутствия одноименной папки обработать исключение. Таким образом в своей консольной утилите я создаю иерархию папок. Кроме того, если одноименный каталог уже существует, происходит заход в него.

Удаление объекта

Удаление файла и/или директории по протоколу WebDAV реализуется так же просто, как создание коллекции. Для реализации этой задачи послужит приведенный выше код, в котором надо заменить строчку, задающую выполняемый сервером метод, на следующую:

В этом случае также лучше использовать конструкцию try/catch для перехвата исключения, которое может возникнуть по причине отсутствия удаляемого объекта.

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

Чтобы скачать файл из облачного хранилища по протоколу WebDAV, нужно проделать не так уж много манипуляций с имеющимся кодом. Но для начала закинь какой-нибудь файл в облако стандартными средствами (через веб-интерфейс или десктопный Яндекс-клиент). По замыслу, при скачивании файла в четвертое (нижнее) поле ввода мы будем вводить имя файла, который хотим закачать. Это же имя присвоим файлу-результату на локальном компе. Заметь, на сервере мы можем указать /Software/file.txt и будет получен доступ к файлу в папке Software, однако в локальной файловой системе автоматом папка создана не будет, поэтому ее предварительно надо создать. Коротко говоря, мы будем качать файл ZuneSetupPkg.exe (незаменимая тулза для работы с Windows Phone, которую частенько приходится доустанавливать на чужих компах, поэтому она всегда у меня под рукой — в облаке) из корня Яндекс.Диска в директорию с экзэшником.

В последней строчке кода читаем из заголовка ответа от сервера размер файла и сохраняем его в переменную. Дальше создаем файловый поток для записи файла на диск:

Затем получаем поток от сервера:

Порциями читаем из него данные и пишем их в файл, пока есть что писать:

Этот код не лишен исключений, которые надо ловить, среди них: (404) невозможно найти файл (на сервере), невозможно записать в указанное место и многие другие.

02

Загрузка файла на сервер

03

В полноценной программе надо осуществлять закачку сразу нескольких файлов (по желанию юзера), выбор файлов по маске, создание иерархии каталогов и, наконец, обработку ошибок. Мы же, чтобы не толочь воду в ступе, все это опустим и сконцентрируемся на загрузке одного заданного файла, без создания папок и обработки ошибок. Все это оставим тебе в качестве домашнего задания. Итак, в подготовленной мной проге из обработчика нажатия на кнопку вызывается метод UpdateFile, ему передаются имя хоста и имя загружаемого файла, которые берутся из соответствующих полей ввода. Начало самого метода подобно рассмотренным выше, однако теперь в заголовке запроса мы передаем на выполнение сервером команду PUT, то есть выказываем наше желание загрузить файл. Если при выполнении предыдущих запросов мы особо не опирались на документацию, то на этот раз она нам очень пригодится: включим в заголовок запроса все рекомендуемые Яндексом поля, а также некоторые дополнительные. Итак, рассмотрим код заголовка, а потом обсудим траблы:

04

Итоги

На этом разработка нашей утилиты подошла к концу. В ней мы реализовали весь планируемый функционал — четыре самые нужные команды, без которых не может обойтись ни один менеджер управления файлами на удаленном хосте. Мы не стали привязываться к услугам определенного хостинга, используя его API, мы разработали универсальное приложение, общающееся с сервером по стандартному протоколу WebDAV. Это позволило нашей программе, используя один код, подключаться сразу к нескольким серверам (я тестировал на Yandex.disk и Dropbox). Тем не менее, как мы увидели, разные сервисы несколько по-разному интерпретируют и поддерживают протокол.

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

На этой ноте я хочу пожелать тебе удачи во всех делах и быть побольше на свежем воздухе :). До встречи на страницах ][!

Юрий Язев

Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».

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