Webdav что это такое
WebDAV: Подключаем сетевой диск облачного хранилища в Windows 10 и Linux
Web Distributed Authoring and Versioning (WebDAV) – это расширение HTTP, которое обеспечивает совместный способ редактирования и управления вашими файлами на удаленном веб-сервере. В этой статье вы узнаете, как подключить диск WebDAV в Windows 10 и Linux, для того чтобы получить доступ файлам облачного хранилища непосредственно в файловом менеджере.
Содержание
Подключение сетевого диска по протоколу WebDAV в Windows 10
Чтобы подключиться к каталогу WebDAV в Windows 10, вам понадобится URL-адрес облачного хранилища по протоколу WebDAV, данные для авторизации в вашу учетную запись.
Например, для облачного хранилища NextCloud ваша персональная ссылка доступна в левом нижнем углу веб-интерфейса облака, в окне Настройки.
Для облачного хранилища OneDrive ссылка на подключение должна содержать идентификатор.
Ссылка выглядит следующим образом:
Будет произведена авторизация и затем подключение к облачному хранилищу.
Как повысить максимальный размер загружаемых файлов до 4 ГБ
По умолчанию в Windows максимальный размер файлов, которые можно пересылать по WebDAV, около 50 МБ. Чтобы повысить до 4 ГБ, выполните следующие действия:
Что делать, если не удается подключиться к каталогу WebDAV
Если вы не можете подключиться к каталогу WebDAV, обновите базовый уровень проверки подлинности в реестре Windows.
Подключение сетевого диска по протоколу WebDAV в Linux
Рассмотрим два способа подключения WebDav в Linux.
Первый способ. Подключение из файлового менеджера
В зависимости от облачного хранилища ссылка может отличаться, но в любом случае в ссылке ввместо http (https) должен быть указан протокол davs.
Второй способ. Монтирование сетевого диска по протоколу WebDav
Во время установки вас спросят, хотите ли вы, чтобы непривилегированным пользователям было разрешено монтировать ресурсы WebDAV. Выберите Да.
Вместо папки nextcloud можно указать свое название.
В конце файла нужно вставить ссылку на подключение и данные для авторизации. Пример для подключения облака NextCloud:
В конце файла добавляем ссылку на подключения с именем и паролем и конфигурацией монтирования. Пример для подключения к NextCloud:
Где nextcloud – это ваша папка названия сетевого диска (этап 2 в данной инструкции).
WebDAV: для чего он нужен и как его настроить в Windows 10
WebDAV Протокол (веб-распределенная разработка и управление версиями) разработан IETF, это протокол, который позволяет нам легко сохранять, редактировать, копировать, перемещать и обмениваться файлами с веб-серверов. Благодаря этому протоколу мы можем работать с файлами непосредственно на веб-сервере, как если бы это был Samba или FTP-сервер. В настоящее время большинство современных операционных систем, таких как Windows, Linux или macOS, разрешить поддержку WebDAV, чтобы файлы на сервере WebDAV отображались как хранящиеся в каталоге. Хотите подробно узнать, как работает этот протокол?
Что такое WebDAV и для чего он нужен?
В настоящее время протокол WebDAV является стандартом, и он доступен по умолчанию во всех операционных системах для настольных компьютеров, таких как Windows, Linux, а также macOS. Существуют разные клиенты WebDAV для разных операционных систем, они более или менее функциональны. Также очень важно, что WebDAV поддерживается веб-серверами. Если веб-сервер, такой как Apache, Lighttpd или Nginx, не поддерживает или не имеет настроенного WebDAV, мы не сможем использовать его для управления файлами. В зависимости от веб-сервера, который у нас есть, синтаксис конфигурации WebDAV различается, но, поскольку это стандартный протокол, операции во всех из них одинаковы.
Другие особенности WebDAV заключаются в том, что он поддерживает 256-битное шифрование AES SSL, если мы используем протокол HTTPS для соединения. Он может без проблем проходить через брандмауэры, NAT и прокси, наконец, он быстрее, чем популярный протокол SMB / CIFS, если мы используем его поверх VPN, поэтому, если вы собираетесь подключиться удаленно, вам может быть интересно использовать его в Samba.
Конфигурация WebDAV на сервере QNAP NAS
Если вы решите настроить определенные разрешения для WebDAV, вам придется настроить его в «Общие папки» QNAP.
Мы идем в » Панель управления / привилегии / общие папки »И нажмите« Изменить разрешения для общей папки », чтобы позже отобразить параметр« Выберите тип разрешения »и выберите» Доступ к WebDAV «. Этот параметр доступен только для выбора, если мы выбрали «Разрешения WebDAV» на сервере WebDAV, в противном случае он не появится.
Мы редактируем разрешения папок по своему желанию и нажимаем «Применить».
На этом этапе мы правильно настроили сервер WebDAV на нашем сетевом хранилище QNAP, теперь мы собираемся настроить клиент WebDAV, который по умолчанию установлен в Windows, для подключения к серверу.
Конфигурация клиента WebDAV в Windows 10
После перезапуска мы переходим к «Компьютер» и щелкаем правой кнопкой мыши на « Добавить местоположение в сети ».
Следуем за мастером, выбирая « Выберите другое место сети ».
Теперь нам нужно указать IP-адрес нашего сервера WebDAV, используя HTTP или HTTPS. У нас были проблемы при использовании HTTPS с Windows 10, поскольку кажется, что сам клиент несовместим, поэтому мы должны использовать HTTP (без шифрования), а если мы хотим обеспечить безопасную связь, мы должны использовать VPN.
Как только мы нажмем «Далее», появится экран для ввода учетных данных пользователя, после ввода имени пользователя и пароля он укажет, что соединение правильное, и мы сможем дать этому сетевому местоположению имя.
Когда мы дадим ему имя, мы нажмем «Готово», чтобы завершить работу мастера добавления сетевых местоположений.
В настоящее время мы сможем получить доступ к нашему серверу через протокол WebDAV, как вы можете видеть ниже:
Как вы видели, протокол WebDAV очень легко настроить, а также использовать в операционных системах Windows, хотя мы должны помнить, что он без проблем совместим с Linux и macOS.
📑 WebDAV
WebDAV (Web Distributed Authoring and Versioning) — защищённый сетевой протокол высокого уровня, работающий поверх HTTP. Используется для доступа к объектам и коллекциям.
Всемирная паутина должна была стать средой для потребления и производства контента. Но веб-браузеры почти сразу утратили способность редактировать веб-страницы, и контент, доступный только для чтения, превратился в непреодолимую норму.
Только самые ранние веб-браузеры поддерживали редактирование веб-страниц. Тем не менее, часто требуется совместное редактирование удаленного контента, и поэтому оно появилось в Интернете в разных формах. WebDAV (Web Distributed Authoring и Versioning) — это один из механизмов. Веб-сервер, который поддерживает WebDAV, одновременно работает как файловый сервер. Это мощная возможность.
Вы можете столкнуться с WebDAV на HTTP-серверах Apache и Nginx, Microsoft IIS, Box.com, WordPress, Drupal, Microsoft Sharepoint, Subversion, Git, Windows Explorer, macOS Finder, Microsoft Office, Apple iWork, Adobe Photoshop и многих других местах.
Сервер WebDAV всегда является веб-сервером, но он может быть встроен в другую систему. Реализация WebDAV с открытым исходным кодом по умолчанию находится на сервере Apache HTTP. Многие веб-серверы поддерживают WebDAV через дополнительный модуль, например Nginx, lighttpd и Microsoft IIS.
WebDAV восходит к концу 90-х годов; в годы интернета это древнее. В мире веб-протоколов и API-интерфейсов он предшествует архитектурам SOAP / XML и RESTful. Несмотря на свою долговечность, реализации WebDAV могут быть странными. Многие серверы и клиенты реализуют подмножества или расширенные подмножества множества стандартов. Таким образом, совместимость не может быть принята; Успех зависит от платформы, среды и специфических для поставщика расширений.
Благодаря этому во многих случаях использования WebDAV заменяется более современными механизмами. Но это все еще мощная возможность и надежная рабочая лошадка, когда подобраны подходящие серверы и клиенты.
Протокол WebDAV позволяет веб-серверу вести себя также как файловый сервер, поддерживая совместную разработку веб-контента.
WebDAV расширяет набор стандартных HTTP-методов и заголовков, чтобы обеспечить возможность создания файла или папки, редактирования файла на месте, копирования или перемещения или удаления файла и т. Д. В качестве расширения HTTP, WebDAV обычно использует порт 80 для незашифрованного доступ и порт 443 (HTTPS) для безопасного доступа.
Для поддержки совместной разработки исходная спецификация WebDAV включала блокировку файлов, но в части «управления версиями» DAV это было связано со сложностью домена отслеживания версий. DeltaV (RFC 3253), часть управления версиями и конфигурацией WebDAV, была определена позже. Возможности поиска также были добавлены в более позднем расширении (RFC 5323).
Доступ к файлам и манипулирование ими — это хорошо понятная возможность, которая полезна для широкой аудитории. Но отслеживание изменений чуждо нетехническим пользователям. Также нет распространенного метода, который операционные системы, системы контроля версий и приложения используют для моделирования истории и изменений. Используются многие схемы. Как следствие, WebDAV без контроля версий широко распространен, а DeltaV гораздо менее широко реализован.
Несколько систем контроля версий доступны через ту или иную форму WebDAV, включая Subversion, Git и PVCS.
Если вы встречаете сервер WebDAV, называемый «класс 1», это означает, что в нём отсутствует блокировка. Класс 2 включает в себя блокировку. Сервер WebDAV с версионированием часто называют просто сервером «DeltaV».
WebDAV сам по себе является основой для дополнительных протоколов, включая календарь (CalDAV) и управление контактами (CardDAV).
В разработке протокола WebDAV принимали участие сотрудники ведущих компаний: Microsoft, Netscape, Novell и Xerox, Rational, Intersolv, IBM.
Основные функции WebDAV:
То, что протокол предоставляет пользователям возможность совместно использовать и редактировать файлы на удаленном онлайн сервере широко используется в WEB-сервисах, WEB-системах (особенно в системах коллективной работы — groupware).
WebDAV позволяет работать с онлайн-хранилищами, такими как Яндекс.Диск, 4shared.com, Dropbox, Box.com и т.д.
Хотя существуют альтернативы WebDAV и некоторые из них являются более новыми системами, ни одна из конкурирующих систем не объединяет все возможности WebDAV. Ключевые атрибуты WebDAV:
Ни одна из альтернативных систем управления файлами не обладает всеми этими атрибутами. Вы можете безопасно передавать файлы с помощью SFTP и SCP, но эти протоколы не включают контроль версий. WebDav предоставляет удаленный доступ к документам в центральном хранилище, а не требует, чтобы файлы копировались на локальный компьютер пользователя, а затем копировались обратно.
Вы можете купить пакеты программного обеспечения, которые управляют совместной авторизацией, но тогда вы будете платить за систему, которая просто дублирует сервисы WebDAV, которые вы можете получить бесплатно.
Хотя WebDAV иногда изображают как устаревшую методологию, он очень хорошо помогает популярным компаниям, занимающимся облачным хранением данных, обеспечивать беспрепятственный локальный доступ к удаленным файлам. Современные рабочие практики разделения рабочих мест, управления проектами, совместной разработки, координации разработки, удаленной работы и облачных сервисов создают требования к сервисам, которые WebDAV может предоставлять десятилетиями. В некотором смысле, WebDAV опередил свое время, и только сейчас компании начинают использовать полный набор возможностей WebDAV.
Изучаем WebDav
Содержание статьи
Если бы в качестве введения я начал расписывать достоинства облачных хранилищ данных, ты бы подумал, что меня только что разморозили после двадцатилетнего анабиоза или что я серьезно злоупотребляю снотворными :). Поэтому скажу кратко, по-программистски: когда передо мной встала задача сделать программу, которая могла бы без привязки к API конкретного сервиса работать с файлами на множестве хранилищ (речь шла о бэкапе), оказалось, что это не так просто. Обо всех тонкостях и подводных камнях проделанной работы я решил тебе рассказать в этой статье.
WebDAV
WebDAV (Web Distributed Authoring and Versioning) — это протокол для передачи данных и работы с ними, построенный поверх HTTP 1.1. Здесь следует заметить, что передача может быть как защищенной, так и незащищенной. В самом протоколе защищенность отсутствует, но она может быть добавлена через реализацию аутентификации на веб-сервере и шифрование посредством SSL, следовательно, в таком случае будет использоваться не HTTP, а HTTPS.
Изначально DAV разрабатывался для совместного создания и редактирования веб-страниц, но в процессе использования он нашел применение в качестве сетевой распределенной файловой системы, эффективной для работы в высоконагруженной среде и поддерживающей неустойчивое соединение. Таким образом, DAV подходит для управления файлами на веб-серверах, иными словами, реализации облачных хранилищ информации, где и был применен. С его помощью можно выполнять основные операции над файлами, содержащимися на сервере, проводить расширенные операции, как то: блокировка, получение метаданных, контроль версий и другие. Этот протокол стал заменой для старого доброго FTP, чье время подошло к концу.
WebDAV предоставляет семь команд:
Кроме того, 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. Я уже подумал, что на этом исследования закончились… Но обнаружилось, что этот компонент ни в какую не коннектится к Яндексу (Яндекс.Диск был для меня более приоритетным сервисом, поэтому все тесты я в первую очередь проводил на нем).
Затем я решил воспользоваться старой, но проверенной временем сетевой библиотекой Synapse для Delphi. К тому же в Рунете есть прекрасный сайт, содержащий несколько статей, посвященных этой либе, www.webdelphi.ru. На первых порах работа двигалась хорошо, и мне удалось реализовать несколько функций протокола: создание папки, скачивание файлов, получение свойств объектов. Но самую главную функцию — загрузку файлов на сервер с локального компа — реализовать так и не удалось. Стало грустно: в интернете об этом протоколе толковой информации нет. Bing нашел несколько платных наборов компонентов для работы с сетью, одной из которых я ради интереса решил воспользоваться, чтобы выяснить, реально ли загрузить файл на Яндекс.Диск. Этой либой оказалась Clever Internet Suite. Создав компонент класса clWebDav, одной строчкой кода удалось закинуть файл на сервер:
где stream — файловый поток, предварительно созданный для чтения.
Прекрасно, но отталкивает стоимость этой либы: более 500 у. е., что не есть гуд. Если ты захочешь воспользоваться этим способом, то обрати внимание на версию библиотеки: к Яндексу можно подключиться только с помощью версии 7.0 и выше, если воспользоваться распространенной на просторах Сети версией 6.0, то загрузка данных на сервер не удастся. На этом «играться» с Delphi мне надоело, и я решил обратиться к dotNET и C#.
Подключаемся к Yandex.disk + создаем коллекцию
Следующим действием напишем небольшую программу, способную выполнить четыре операции: создать папку на удаленном хосте, загрузить объект, скачать объект и удалить объект. Этих операций достаточно для большинства приложений, решающих производственные задачи. Для простоты создадим WinForms-приложение. В паре слов расскажу о своей проге. Она представляет собой консольное приложение, запускаемое батником по расписанию. Ее основное действие — это заливка файлов на удаленный хост, при этом в ее задачи входит корректная обработка маски для выбора файлов, а также обработка путей, по которым они размещены, плюс правильное создание в облаке иерархии папок, подобной размещенной на локальном диске. Кроме того, поскольку программа работает в автоматическом режиме, она создает файл с логами. В нашей сегодняшней программе мы опустим эти действия (очевидно, что они не относятся к теме) и сконцентрируемся на протоколе WebDAV.
После создания заготовки приложения размести на его форме четыре кнопки. Первой операцией, которую мы реализуем, будет создание папки (или коллекции). Она самая простая из всех. На заметку: хотя Яндекс.Диск работает по защищенному протоколу HTTPS, папку можно создать по HTTP. Также на форме нам понадобятся четыре поля ввода: для задания адреса удаленного хоста (пока нацелимся на Яндекс.Диск: https://webdav.yandex.ru/), для ввода имени пользователя, пароля (для аутентификации на Яндексе) и ввода имени папки, которую мы хотим создать в облаке (рис. 1). Обрати внимание: адрес сервера надо вводить вместе с указанием протокола, в данном случае https://.
Первым делом в коде подключи пространства имен: using System.Net; — для работы с сетью и using System.IO; — для файлового ввода-вывода. Затем создай обработчик события нажатия на кнопку CreateDir. В него напиши такой код:
Вкратце обсудим код. В начале для удобства размещаем данные из полей ввода в переменные: имя папки, адрес хоста, имя и пароль юзера. Далее формируем URL-адрес: к адресу хоста прибавляем имя создаваемой папки. Как и у HTTP, у WebDAV есть стандартный номер порта — 443, поэтому его указывать необязательно. Теперь на основе URL мы можем создать объект HTTP-запроса, что делается в следующей строке. После создания надо заполнить некоторые его свойства. То есть необходимо указать такие данные, которые будут переданы серверу в заголовке запроса. Смотрим документацию Яндекса (ссылка приведена выше). В число необходимых параметров входят данные аутентификации. Яндекс принимает эти данные в двух видах: Basic — логин и пароль, QAuth — токен по протоколу QAuth. Мы выберем первый путь. Однако в таком случае данные должны быть закодированы. Это осуществляет объект класса NetworkCredential, конструктор которого получает имя и пароль в виде строк. Созданный объект этого класса присваивается свойству Credentials объекта запроса. Следующей строкой мы сообщаем, какую команду мы хотим выполнить, — MKCOL. В этом случае никакие данные передавать/получать не требуется, и сразу после этого мы отправляем запрос. Далее мы можем посмотреть, какой ответ вернул сервер, в случае успеха ответом будет строка Created. В классе HttpWebRequest определено много ответов на все случаи совместного общения клиента и сервера.
WebDAV-протокол не позволяет создать несколько вложенных папок за один запрос, например /folder1/folder2/; можно создать только одну папку: /folder1/. Если каталог существует, а отправленный запрос пытается создать одноименную директорию, в таком случае сервер сгенерирует исключение, которое надо перехватить конструкцией try/catch. В приведенном выше примере не происходит обработка исключений, поэтому если будешь использовать этот код в своем приложении, то не забудь ее добавить. Если необходимо узнать, существует каталог или нет, то для этого можно воспользоваться запросом PROPFIND, а потом получить и пропарсить ответ сервера, содержащий инфу в формате XML о имеющихся на сервере объектах. Но это получится долго, и, на мой взгляд, лучше использовать запрос MKCOL и в случае присутствия одноименной папки обработать исключение. Таким образом в своей консольной утилите я создаю иерархию папок. Кроме того, если одноименный каталог уже существует, происходит заход в него.
Удаление объекта
Удаление файла и/или директории по протоколу WebDAV реализуется так же просто, как создание коллекции. Для реализации этой задачи послужит приведенный выше код, в котором надо заменить строчку, задающую выполняемый сервером метод, на следующую:
Как видно, в классе WebRequestMethods.Http отсутствует метод Delete, но мы можем задать желаемый метод в виде строки. Она будет отправлена на сервер, главное, чтобы он был в состоянии обработать и выполнить этот метод, а WebDAV-сервер, как мы знаем, на это способен.
В этом случае также лучше использовать конструкцию try/catch для перехвата исключения, которое может возникнуть по причине отсутствия удаляемого объекта.
Скачивание файла
Чтобы скачать файл из облачного хранилища по протоколу WebDAV, нужно проделать не так уж много манипуляций с имеющимся кодом. Но для начала закинь какой-нибудь файл в облако стандартными средствами (через веб-интерфейс или десктопный Яндекс-клиент). По замыслу, при скачивании файла в четвертое (нижнее) поле ввода мы будем вводить имя файла, который хотим закачать. Это же имя присвоим файлу-результату на локальном компе. Заметь, на сервере мы можем указать /Software/file.txt и будет получен доступ к файлу в папке Software, однако в локальной файловой системе автоматом папка создана не будет, поэтому ее предварительно надо создать. Коротко говоря, мы будем качать файл ZuneSetupPkg.exe (незаменимая тулза для работы с Windows Phone, которую частенько приходится доустанавливать на чужих компах, поэтому она всегда у меня под рукой — в облаке) из корня Яндекс.Диска в директорию с экзэшником.
В обработчике нажатия на кнопку Download после инициализации переменных, создания объекта-запроса и задания полномочий (Credentials) задай тип метода: GET (см. исходник в материалах к номеру). Затем, получив ответ сервера (объект класса HttpWebResponse), объявим переменные для чтения данных:
В последней строчке кода читаем из заголовка ответа от сервера размер файла и сохраняем его в переменную. Дальше создаем файловый поток для записи файла на диск:
Затем получаем поток от сервера:
Порциями читаем из него данные и пишем их в файл, пока есть что писать:
После того как все данные записаны в файл, закрываем оба потока и серверный ответ. Во время считывания данных мы увеличивали переменную totalBytesRead на количество считанных байт. В этом случае при отсутствии ошибок размер этой переменной должен стать равным размеру, который мы считали из заголовка, и если это так, то файл скачан корректно и мы выводим сообщение об этом (рис. 2), если же размеры не равны, тогда произошла неудача, об этом мы тоже сообщаем пользователю.
Этот код не лишен исключений, которые надо ловить, среди них: (404) невозможно найти файл (на сервере), невозможно записать в указанное место и многие другие.
Загрузка файла на сервер
Последняя операция, без которой наша утилита будет неполной, — это загрузка файла на удаленный хост. Это самая «хитрая» операция. Обсужденные выше операции не вызвали ни малейшего затруднения, но эта оказалась покруче! Я уже рассказывал, что с реализацией загрузки файла были трудности при использовании других средств разработки. И не все гладко было на C#. Вначале в документации посмотрим, какой запрос для заливки файла ждет Яндекс (рис. 3).
В полноценной программе надо осуществлять закачку сразу нескольких файлов (по желанию юзера), выбор файлов по маске, создание иерархии каталогов и, наконец, обработку ошибок. Мы же, чтобы не толочь воду в ступе, все это опустим и сконцентрируемся на загрузке одного заданного файла, без создания папок и обработки ошибок. Все это оставим тебе в качестве домашнего задания. Итак, в подготовленной мной проге из обработчика нажатия на кнопку вызывается метод UpdateFile, ему передаются имя хоста и имя загружаемого файла, которые берутся из соответствующих полей ввода. Начало самого метода подобно рассмотренным выше, однако теперь в заголовке запроса мы передаем на выполнение сервером команду PUT, то есть выказываем наше желание загрузить файл. Если при выполнении предыдущих запросов мы особо не опирались на документацию, то на этот раз она нам очень пригодится: включим в заголовок запроса все рекомендуемые Яндексом поля, а также некоторые дополнительные. Итак, рассмотрим код заголовка, а потом обсудим траблы:
После того как запрос сформирован, надо получить сетевой поток, в который мы будем записывать данные, отправляемые на сервер. Также открываем локальный файл для чтения. Выделяем байтовый буфер для временного хранения считанных из файла данных; затем в цикле начинаем читать и отправлять, записывая данные в поток. После этого закрываем сетевой и файловый потоки, в общем, как обычно. Получив ответ от сервера, проверяем HTTP-статус на его равенство флагу Created и сравниваем размер файла с количеством переданных байт; если оба условия выполняются, значит, пересылка успешна, иначе — возникла проблема.
Итоги
На этом разработка нашей утилиты подошла к концу. В ней мы реализовали весь планируемый функционал — четыре самые нужные команды, без которых не может обойтись ни один менеджер управления файлами на удаленном хосте. Мы не стали привязываться к услугам определенного хостинга, используя его API, мы разработали универсальное приложение, общающееся с сервером по стандартному протоколу WebDAV. Это позволило нашей программе, используя один код, подключаться сразу к нескольким серверам (я тестировал на Yandex.disk и Dropbox). Тем не менее, как мы увидели, разные сервисы несколько по-разному интерпретируют и поддерживают протокол.
Дальнейшее развитие проги предоставляю тебе, по ходу статьи я указал на возможные улучшения: это и загрузка нескольких файлов, и создание иерархии папок, и распараллеливание загрузки, и многое другое. Если копнуть глубже в протокол WebDAV, можно реализовать другие команды для управления контентом на сервере.
На этой ноте я хочу пожелать тебе удачи во всех делах и быть побольше на свежем воздухе :). До встречи на страницах ][!
Юрий Язев
Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».