Как зайти на webdav через браузер
Is there any good browser based WebDAV client? If not, is it possible to make one?
I can answer your second question. Yes, it is possible.There is nothing software can't do. Except may be making coffee, but I am sure, someone is already working on it. ;)
Even coffe shouldn't be a problem if you have a HTCPCP-enabled coffemachine, as described in RFC2324.
6 Answers 6
Well, without hashing the benefits of open-source software, they did put a lot of time & effort into it and should be compensated. Alternatively, it's 100% pure JavaScript. not sure how they'd enforce any type of DRM .
Gonna split a hair and correctyou - *free software. Open source is not necessarily free of either price nor legal encumberments.
There's a plugin for Firefox which handles WebDAV.
Webfolders is a firefox extension that gives you the ability to view the contents of WebDAV servers in the browser and use the full functionality of the WebDAV protocol.
Depends on what you expect the client to do, and whether you're looking for a cross-browser "web application", or a browser extension.
The main issue with doing this in a "web application" (as opposed to a browser extension) is (1) the lack of binary data support in Javascript, and (2) the lack of access to the local file system (which of course is a security feature).
Firefox 3.5, Chrome 4 and Safari 4 now provide access to local file system. You can upload files files using pure JavaScript/XHR via PUT as WebDAV specification requires. We have implemented this support in IT Hit Ajax File Browser. Unfortunately IE still does not support upload via PUT, hope they will fix this in IE 9. Moreover, implementations or CORS in Firefox, Safati and Chrome allow cross-domain access to WebDAV servers.
Update to my above comment, since IE 9 and IE 10 were released: IE 10 supports WebDAV upload via PUT verb. IE 9 does not support PUT upload. So now you can build a fully-functional WebDAV client that runs in IE 10, Firefox, Chrome and Safari.
No Julian, IE 9 and earlier can upload files only via form submission. That is using POST request. Upload via PUT became possible only when File API was introduced in IE 10.
If by browser based you mean that it runs in html (ie you don't want your users to install a plugin) then the answer is partly yes and mostly no.
Partly yes, because I have built and used one. It uses the jquery jtree plugin to display folders, and selecting a folder node populates a file list in the right hand panel. Panels are done with another jquery plugin, and the file list is made dynamic with the jquery datatables plugin.
But I think for you the answer is probably "no". Thats because for the browser to use webdav is must user webdav "methods" like PROPFIND and MKCOL. These methods just arent supported in most browsers, so your javascript can't use them directly. I have a server-side mapping in my webdav server project which allows my javascript to use normal GET and POST methods, and these requests are transformed on the server to webdav methods.
I said "probably no" for you since this serve side mapping isnt standard, its a part of milton. But if you happen to use milton, or you can use milton, then its all good.
Облачные хранилища данных становятся всё более востребованными, как среди частных пользователей, так и среди компаний. При этом некоторые интернет сервисы хранения файлов предоставляют возможность доступа к своему облаку по протоколу WebDAV (Web Distributed Authoring and Versioning).
Преимущества доступа по webdav по сравнению с веб доступом:
- работа с файлами в автоматическом режиме (скачивание/закачивание bat файлами и скриптами JS/VBS/PS), то есть, в первую очередь, это означает возможность автоматического сброса резервных копий на интернет хранилище
- подключение облака как сетевого диска (обычного network drive) с присваиванием буквы логического диска (E:, F: и т.д.), другими словами, возможность работы с облачными файлами из обычных программ (офисные пакеты, графические редакторы и т.п.)
- возможность заливать большие файлы (обычно веб интерфейс позволяет закачивать в хранилище файлы до 2 ГБ). Здесь надо отметить, что бесплатные аккаунты часто ограничены в размере файлов по сравнению с платными, например, на Box бесплатно можно хранить файлы размером не более 250 МБ (на Business аккаунтах размер файла может составлять до 5 ГБ, на Enterprise вроде до 15 ГБ); правда, с большими файлами есть и другие проблемы, но об этом ниже
Статья расскажет о возможностях использования WebDAV в различных программах, особенностях подключения вручную и из командной строки/bat файлов, распространенных проблемах и их решениях.
WebDAV в FAR Manager
Работать с файловым хранилищем по WebDAV можно и без подключения сетевого диска, если использовать плагин NetBox в Far Manager, при этом файлы будут доступны в самом Far Manager, но недоступны в командной строке и в других программах, например, в проводнике Windows.
Подключение сетевого диска WebDAV
Эта функция Windows позволяет получить доступ к файлам по WebDAV не только в файловых менеджерах (Far Manager и т.д.), но также и в командной строке и в проводнике Windows.
В Windows 7 есть встроенный веб клиент, который подключает облако WebDAV как обычный сетевой диск с присваиванием буквы. При подключении следует ввести адрес, который зависит от хранилища.
Строка подключения WebDAV для Яндекс.Диска:
Строка подключения WebDAV для Box:
Подробные инструкции с картинками: Does Box support WebDAV?
Строка подключения WebDAV для OneDrive потребует cid – это идентификатор учетной записи, его можно посмотреть в адресной строке браузера, если открыть веб-интерфейс OneDrive:
Подключение WebDAV из командной строки Windows
Также можно использовать возможности командной строки – команда NET USE успешно подключает WebDAV хранилища, например, эта команда подключает папку Яндекс.Диск в виде логического диска Y:
Эта команда для подключения папки Box в виде логического диска X:
Чтобы подключить OneDrive к букве O: (значение cid берётся из адресной строки браузера в веб-итерфейсе OneDrive:
Чтобы подключить OneDrive к назначаемой автоматически букве диска:
Хотя можно выбрать автоматический выбор буквы диска (указанием звёздочки), я предпочитаю использовать фиксированные буквы — это упрощает работу с командными файлами.
Примечание: параметр /persistent:yes необязательный, он задаёт автоматическое восстановление подключения при перезагрузке компьютера, подробнее об этом см. ниже.
После подключения можно пользоваться стандартными командами для работы с файлами, например:
Проблемы с большими файлами
Для решения этих проблем можно попробовать изменить параметры клиента, как это описано ниже, подробнее см. в статье You cannot download more than 50 MB or upload large Files when the upload takes longer than 30 minutes using Web Client in Windows 7
Но в действительности получилось закачать файл 300 МБ только командой xcopy с отключением буферизации:
Копирование закончилось успешно, при том что не получилось ни проводником Windows, ни copy /y /z /v.
Лимит на размер файла
Исходное значение 50 000 000 байт. Задается в байтах параметром реестра:
Например, можно задать 500 000 000.
Таймаут
Исходное значение 1800 секунд или 30 минут, поэтому операции более 30 минут прерываются. Значение таймаута задается в секундах параметром реестра:
В статье рекомендуется значение 3600, т.е. 3600 секунд или один час.
Производительность wevdav хранилищ
Это очень интересный вопрос для резервного копирования, потому что нам надо понимать, сколько времени будет занимать копирование файла резервной копии на сервер по webdav, ведь размер такого файла может быть и 100МБайт, и 1 ГБайт и больше.
Следующий тест показывает время выгрузки файла 188 МБ на Яндекс Диск по webdav. Подключение к интернету 100 Мбит/с, поэтому на выгрузку существенно не влияет. Для регистрации времени начала и окончания копирования используется программа nhts.
В итоге, файл 188 МБ был скопирован за 38 секунд, то есть скорость выгрузки составила 4,9 МБ/с или 40Мбит/с – хороший результат для резервного копирования. Соответственно, файл 1 ГБ будет загружен на сервер примерно за 3,5 минуты.
Теперь такой же тест для Box (он подключен к X:):
Box работает помедленнее – время копирования того же файла составило 112 секунд, и, соответственно, скорость копирования составила 1,7 МБ/с или 13,4 Мбит/с. При такой скорости время копирования 1ГБ файла составит больше 10 минут. Сам Box пишет, что для business и enterprise аккаунтов есть какая-то оптимизация для повышения скорости копирования на сервер, см. How can I optimize my upload speeds?
Понятно, что скорость копирования может меняться в зависимости от загрузки каналов связи или серверов, но видно, что Яндес Диск быстрее, и с учетом ограничения на размер файла в 250 МБ в Box предпочтительнее для резервного копирования использовать бесплатный Яндекс Диск, чем бесплатный аккаунт Box.
Возможные проблемы и их решение
При появлении проблемы подключения важно определить, какую именно ошибку сообщает программа – чтобы делать правильные действия для её устранения.
Ошибка 67 — не найдено сетевое имя
Ошибка 67 означает, что не удалось найти сервер по указанному в команде сетевому имени. В английской версии Windows эта ошибка описывается как «The network name cannot be found».
В первую очередь необходимо проверить, правильно ли в команде набран протокол и адрес webdav сервера, например, для Яндекс.Диска должно быть:
Во-вторых, проверить разрешение сетевого имени – сервер должен быть доступен:
Если сервер неизвестен или не отвечает, то явно что-то не так с интернет подключением.
Если сетевое имя сервера указано корректно, сервер успешно пингуется, но подключение с правильными параметрами всегда завершается ошибкой 67, то причиной проблемы является блокировка подключения со стороны локальной сети. Например, у меня на работе происходит именно так, потому что доступ к интернет хранилищам по WebDav заблокирован администраторами намеренно, наверное, чтобы предотвратить слив информации на сторону. Чтобы убедиться, что причина именно в этом, необходимо попробовать подключение с точно такими же параметрами, но из другой сети, лучше из домашней, потому что операторы обычно не блокируют WebDAV коммуникации. Если проверка подтвердила, что локальные админы блокируют подключение, то решить проблему можно только через них.
Поэтому при этой ошибке я проверяю, что пароль введён правильно и находится между адресом сервера и параметром /user .
Также сложность может возникнуть, если пароль содержит спецсимволы, имеющие особое значение в командных cmd/bat файлах, потому что эта часть строки может быть интерпретирована неправильно. Чтобы это проверить, можно попробовать временно указать звёздочку вместо пароля, тогда программа запросит пароль после запуска. Если подключение при вводе пароля по запросу сработает, то надо проверить пароль на наличие недопустимых символов. Например, у меня один из паролей содержал символ амперсанда ‘&’, и это приводило к ошибке 1244. Обойти ошибку удалось, заключив пароль в кавычки. Но если в пароле есть символ кавычек, то это обойти, скорее всего, не удастся – лучше изменить пароль, исключив из него кавычки.
Действия с хранилищем в командном файле
Как проверить, что хранилище подключено
Проверка того, что подключение установлено, и сервер доступен, может потребоваться в командных файлах. Её можно выполнить командой IF EXIST.
Например, cmd/bat файл для подключения WebDAV проверяет, если диск уже подключен, то сразу выходит:
Или cmd/bat файл резервного копирования проверяет перед выгрузкой, что сетевой диск доступен:
Копирование файлов по WebDAV
Из-за буферизации на стороне клиента в стандартной COPY или в проводнике возможна потеря данных, поэтому рекомендуется использовать XCOPY с отключением буферизации и с контролем размера.
Автоматическое подключение сетевого диска
Возможность для автоматического подключения сетевого диска при загрузке компьютера на самом деле уже есть и включается параметром /persistent:yes (см. выше).
Недостаток этого решения состоит в том, что при загрузке компьютера делается только одна попытка подключения диска. Если на этот момент не было сетевого подключения или временно сервер был недоступен, то диск так и останется не подключенным.
Та же проблема возникает, если в автозагрузку вставить только команду подключения:
Подключение сетевого диска с проверкой и повтором
Чтобы сделать более надёжное решение, использую cmd/bat файл с проверкой результата и повтором попытки:
В случае ошибки NET USE попытка подключения повторяется через 1 минуту. Задержка делается с помощью ping, подробнее см. Как сделать задержку в командном файле.
Этот командный файл можно запускать вручную или через автозагрузку.
Чтобы не мешало чёрное окно bat файла, можно спрятать его путём запуска через wsh скрипт, см. Скрыть консольное окно.
Содержание
Подключение сетевого диска по протоколу WebDAV в Windows 11
Для подключения облачного хранилища по протоколу WebDAV в Windows 11 нам необходим будет как соответствующий URL-адрес облачного сервиса, так и данные для авторизации.
Как создать пароль приложения для авторизации облачного хранилища Яндекс по протоколу WebDav
- Перейдите на страницу Яндекс ID, чуть ниже на странице откройте раздел Пароли и авторизация, затем Включить пароли приложений – введите действующий пароль от аккаунта Яндекс.
- В появившемся окне выберите Создать пароль приложения – Тип приложения - Файлы (Webdav).
- Добавьте название для созданного пароля и затем нажмите на кнопку Создать пароль.
- Скопируйте созданный пароль.
- Перейдите на страницу Mail ID - «Безопасность» - «Пароли для внешних приложений» и нажмите на кнопку Добавить.
Подключаем сетевой диск по протоколу WebDAV в Windows 11
Для того чтобы подключить сетевой диск облачного хранилища по протоколу WebDAV в Windows 11 выполните следующие действия:
- В окне файлового менеджера Проводник нажмите правой кнопкой мыши по значку «Этот компьютер» – в контекстном меню - «Показать дополнительные параметры» – в следующем окне «Подключить сетевой диск. ».
Подключение сетевого диска по протоколу WebDAV в Windows 10
Чтобы подключиться к каталогу WebDAV в Windows 10, вам понадобится URL-адрес облачного хранилища по протоколу WebDAV, данные для авторизации в вашу учетную запись.
- Откройте Проводник на своем компьютере и нажмите правой кнопкой мыши по значку «Этот компьютер».
- В открывшемся контекстном меню нажмите на «Подключить сетевой диск. »
- В новом диалоговом окне введите букву диска, которую вы хотите сопоставить и в опции «Папка» укажите URL-ссылку сетевого хранилища, которая работает по протоколу WebDav. Поставьте галочку на опции «Использовать другие учетные данные».
Например, для облачного хранилища NextCloud ваша персональная ссылка доступна в левом нижнем углу веб-интерфейса облака, в окне Настройки.
Для облачного хранилища OneDrive ссылка на подключение должна содержать идентификатор.
Ссылка выглядит следующим образом:
Где xxxxxxxx – это идентификатор. Скопировать свой идентификатор можно в URL-адресе OneDrive. Авторизуйте в OneDrive , затем в адресной строке браузера скопируйте данные после знака равно.
- В следующем окне ведите учетные данные авторизации облачного хранилища.
Будет произведена авторизация и затем подключение к облачному хранилищу.
- Нажмите правой кнопкой мыши по значку «Быстрый доступ» , в появившемся меню выберите «Закрепить текущую папку на панели быстрого доступа».
Как повысить максимальный размер загружаемых файлов до 4 ГБ
По умолчанию в Windows максимальный размер файлов, которые можно пересылать по WebDAV, около 50 МБ. Чтобы повысить до 4 ГБ, выполните следующие действия:
- Редактор реестра. Откройте меню Пуск и с помощью поиска в нем откройте приложение regedit от имени Администратора.
- В редакторе реестра Regedit перейдите в каталог
- Найдите значение FileSizeLimitInBytes. Нажмите правой кнопкой мыши и выберите «Изменить», а затем измените значение на ffffffff.
Что делать, если не удается подключиться к каталогу WebDAV
Если вы не можете подключиться к каталогу WebDAV, обновите базовый уровень проверки подлинности в реестре Windows.
- Редактор реестра. Откройте меню Пуск и с помощью поиска в нем откройте приложение regedit от имени Администратора.
- В редакторе реестра Regedit перейдите в каталог
- Найдите значение BasicAuthLevel. Нажмите правой кнопкой мыши и выберите «Изменить», а затем измените значение на 2.
Подключение сетевого диска по протоколу WebDAV в Linux
Рассмотрим два способа подключения WebDav в Linux.
Первый способ. Подключение из файлового менеджера
- Откройте файловый менеджер. В зависимости от файлового менеджера расположение опции для подключения может отличаться. Затем, например в файловом менеджере Nemo нажмите на Файл > Подключение к серверу.
Второй способ. Монтирование сетевого диска по протоколу WebDav
Во время установки вас спросят, хотите ли вы, чтобы непривилегированным пользователям было разрешено монтировать ресурсы WebDAV. Выберите Да.
- Создаем папку в которую будем монтировать сетевой диск и папку для хранения конфигурации:
Вместо папки nextcloud можно указать свое название.
- Продолжаем:
- Ограничиваем права доступа к папке для только владельца:
- Редактируем файл secrets:
В конце файла нужно вставить ссылку на подключение и данные для авторизации. Пример для подключения облака NextCloud:
В конце файла добавляем ссылку на подключения с именем и паролем и конфигурацией монтирования. Пример для подключения к NextCloud:
- Добавляем себя в группу davs2:
- Команда монтирования диска:
- Команда для размонтирования:
Где nextcloud – это ваша папка названия сетевого диска (этап 2 в данной инструкции).
Если бы в качестве введения я начал расписывать достоинства облачных хранилищ данных, ты бы подумал, что меня только что разморозили после двадцатилетнего анабиоза или что я серьезно злоупотребляю снотворными :). Поэтому скажу кратко, по-программистски: когда передо мной встала задача сделать программу, которая могла бы без привязки к 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.
WebDAV-протокол не позволяет создать несколько вложенных папок за один запрос, например /folder1/folder2/; можно создать только одну папку: /folder1/. Если каталог существует, а отправленный запрос пытается создать одноименную директорию, в таком случае сервер сгенерирует исключение, которое надо перехватить конструкцией try/catch. В приведенном выше примере не происходит обработка исключений, поэтому если будешь использовать этот код в своем приложении, то не забудь ее добавить. Если необходимо узнать, существует каталог или нет, то для этого можно воспользоваться запросом PROPFIND, а потом получить и пропарсить ответ сервера, содержащий инфу в формате XML о имеющихся на сервере объектах. Но это получится долго, и, на мой взгляд, лучше использовать запрос MKCOL и в случае присутствия одноименной папки обработать исключение. Таким образом в своей консольной утилите я создаю иерархию папок. Кроме того, если одноименный каталог уже существует, происходит заход в него.
Удаление объекта
Удаление файла и/или директории по протоколу WebDAV реализуется так же просто, как создание коллекции. Для реализации этой задачи послужит приведенный выше код, в котором надо заменить строчку, задающую выполняемый сервером метод, на следующую:
В этом случае также лучше использовать конструкцию try/catch для перехвата исключения, которое может возникнуть по причине отсутствия удаляемого объекта.
Скачивание файла
Чтобы скачать файл из облачного хранилища по протоколу WebDAV, нужно проделать не так уж много манипуляций с имеющимся кодом. Но для начала закинь какой-нибудь файл в облако стандартными средствами (через веб-интерфейс или десктопный Яндекс-клиент). По замыслу, при скачивании файла в четвертое (нижнее) поле ввода мы будем вводить имя файла, который хотим закачать. Это же имя присвоим файлу-результату на локальном компе. Заметь, на сервере мы можем указать /Software/file.txt и будет получен доступ к файлу в папке Software, однако в локальной файловой системе автоматом папка создана не будет, поэтому ее предварительно надо создать. Коротко говоря, мы будем качать файл ZuneSetupPkg.exe (незаменимая тулза для работы с Windows Phone, которую частенько приходится доустанавливать на чужих компах, поэтому она всегда у меня под рукой — в облаке) из корня Яндекс.Диска в директорию с экзэшником.
В последней строчке кода читаем из заголовка ответа от сервера размер файла и сохраняем его в переменную. Дальше создаем файловый поток для записи файла на диск:
Затем получаем поток от сервера:
Порциями читаем из него данные и пишем их в файл, пока есть что писать:
Этот код не лишен исключений, которые надо ловить, среди них: (404) невозможно найти файл (на сервере), невозможно записать в указанное место и многие другие.
Загрузка файла на сервер
В полноценной программе надо осуществлять закачку сразу нескольких файлов (по желанию юзера), выбор файлов по маске, создание иерархии каталогов и, наконец, обработку ошибок. Мы же, чтобы не толочь воду в ступе, все это опустим и сконцентрируемся на загрузке одного заданного файла, без создания папок и обработки ошибок. Все это оставим тебе в качестве домашнего задания. Итак, в подготовленной мной проге из обработчика нажатия на кнопку вызывается метод UpdateFile, ему передаются имя хоста и имя загружаемого файла, которые берутся из соответствующих полей ввода. Начало самого метода подобно рассмотренным выше, однако теперь в заголовке запроса мы передаем на выполнение сервером команду PUT, то есть выказываем наше желание загрузить файл. Если при выполнении предыдущих запросов мы особо не опирались на документацию, то на этот раз она нам очень пригодится: включим в заголовок запроса все рекомендуемые Яндексом поля, а также некоторые дополнительные. Итак, рассмотрим код заголовка, а потом обсудим траблы:
Итоги
На этом разработка нашей утилиты подошла к концу. В ней мы реализовали весь планируемый функционал — четыре самые нужные команды, без которых не может обойтись ни один менеджер управления файлами на удаленном хосте. Мы не стали привязываться к услугам определенного хостинга, используя его API, мы разработали универсальное приложение, общающееся с сервером по стандартному протоколу WebDAV. Это позволило нашей программе, используя один код, подключаться сразу к нескольким серверам (я тестировал на Yandex.disk и Dropbox). Тем не менее, как мы увидели, разные сервисы несколько по-разному интерпретируют и поддерживают протокол.
Дальнейшее развитие проги предоставляю тебе, по ходу статьи я указал на возможные улучшения: это и загрузка нескольких файлов, и создание иерархии папок, и распараллеливание загрузки, и многое другое. Если копнуть глубже в протокол WebDAV, можно реализовать другие команды для управления контентом на сервере.
На этой ноте я хочу пожелать тебе удачи во всех делах и быть побольше на свежем воздухе :). До встречи на страницах ][!
Юрий Язев
Широко известен под псевдонимом yurembo. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».
Рассмотрим самые распространенные сервисы такие, как :
- Google Drive
- Yandex
- Mail ru
- DropBox
- Mega
- MediaFire
- Onedrive
Все мы знаем что зайти в можно через браузер и свистелки перделки софта разработчиков. Меня интересует такой ключевой момент, как не заходя в браузер всё это организовать более удобно и без лишнего телодвижения.
То есть, зайти и использовать то или иное облако и переключаясь между ними, не храня локальные файлы синхронизацию можно включить при желание.
PS: Обшарил кучу ресурсов и авторы пишут такую ахинею, что глаза режет и блевать тянетв общем инет закидали говном свякие пидерасты не шарящие в этой хуете, честно заебали. Все ссылки в самом низу.
- Air Explorer
- WebDav
- Total commander
Air Explorer
Да свистелка перделка еще и платная. Программа монтирует облачные диски в качестве локальных дисков на вашем компьютере, поэтому вы можете открывать удаленные файлы любым приложением без необходимости синхронизации или использования локального дискового пространства.
- Легкая
- Удобный интерфейс
- Копирование файлов между облоками
- Поддержка сервисов
Выбрал ее исключительно за дикое удобство, настройку, приятная глазу, портабельность.
Вот так она выглядит, что я считаю довольно не плохо после CarotDav.
CarotDav
- OneDrive
- Dropbox
- GoogleDrive
- Box
- SugarSync
- HubiC
- OpenStack
- Swift
- iCloud
- Drive
И кучкой протоколов список на сайте.
CarotDav сам по себе удобен, бесплатен, легок, портативен.
Сменил его т.к работал с перебоями в GoogleDrive, возможно из за старой версии или корявого соединения, без перебоев было в 2018 году.
Протокол WebDav для Yandex / Mail
По мне так самое удобное подключение без стороннего софта по средствам Windows. Покажу на примере yandex, т.к мыло ру терпеть не могу. Майл ру работает по аналогии, но только с платными аккаунтами.
Выглядит оно, как общий сетевой диск:
Windows 7. Для подключения заходим в "Мой компьютер"
Windows 10. Нажимаем левой кнопкой мыши на "Пуск", а затем уже правой клавишей жмем по пункту "Проводник". В открывшемся диалоговом меню выбираем строку с названием "Подключить сетевой диск":
В следующем окне указываем произвольную букву сетевого диска и в поле "Папка" вводим адрес как на скриншоте ниже:
Жмякаем готово и вводим логин и пароль от почты.
Total Commander
Известный и очень функциональный файловый менеджер, выглядит так:
чтобы подключить Диск от Яндекса с помощью протокола WebDAV таким способом, нужно скачать небольшое расширение с одноименным названием по этой ссылке и установить его. Открываем файл с помощью программы или ручками кидаем плагин, если Portable версия .
После завершения инсталляции плагина следует нажать на кнопку "Сеть/FS-плагины" и выбрать папку с названием WebDAV в старой версии.
В новой версии подключение находится сдесь:
Вводим логин и пароль.
Вот так будет выглядеть директория подключения:
WebDavMailRuCloud
Созданная программистом с ником yar229 программа эмулирует сервер WebDAV, позволяя работать с содержимым Облака почти как с обычным диском. На них можно будет хранить документы и даже запускать игры (пробовал хранить RimWorld, грузилась дольше получаса из-за большого количества мелких файлов, но ведь работает!).
Метод, используемый для подключения к Облаку, вряд ли прикроют, потому что WebDavMailRuCloud по сути имитирует действия пользователя через веб-интерфейс. Когда юзер сохраняет на сетевой диск файл или создаёт папки, сервера Мейла ничего необычного не замечают — с их точки зрения пользователь работает с Диском через браузер.
2. Распакуйте скачанный архив WebDAVCloudMailRu-*.*.*.*-dotNet45.zip в, например, C:\Program files\WDMRC.
3. Запустите wdmrc.exe с параметрами командной строки вида «—port 801 —install WDMRC», где:
Либо, если вы не знаете, как запускать программы с параметрами командной строки, создайте в Блокноте текстовый файл с таким содержанием:
В кавычках — путь до распакованной программы wdmrc. Убедитесь, что он правильный, ведь вы могли распаковать его в другую папку. Для копирования пути можете нажать правой кнопкой мыши с зажатым Shift по программе wdmrc.exe в папке и выбрать пункт «Копировать как путь» — это и будет полный, точный путь до софтины.
Обратите внимание: в примере я указал два порта 801 и 802 для подключения двух Облаков. Если у вас одна учётная запись, достаточно 801.
Сохраните текстовый документ под именем, например, installwdmrc.bat и запустите от имени администратора, нажав правой кнопкой мыши и выбрав «Запуск от имени администратора»:
О том, что всё прошло удачно, в открывшемся окне сообщат такие строки:
Служба WDMRC успешно установлена
Что может пойти не так:
- Неверно указали путь до wdmrc.exe.
- Забыли про кавычки (нужны, когда в пути присутствуют символы пробела или кириллица).
- Лишние пробелы.
- В пароле есть кавычки.
- Не запустили от имени администратора.
- Антивирусный софт мешает установке службы (выключите его на время).
- Неверно указали порты (—port порт1, порт1, порт3… — смотря сколько учётных записей нужно использовать). Тогда на этапе подключения диска случится ошибка 67. Будьте внимательны!
- Совет от Aleksei из комментариев по поводу ошибки 67: «нужно либо включить(перевести в автозапуск) службу «Веб-клиент» либо, если дело происходит в серверной винде, включить «Возможности рабочего стола» либо, если это 2019 сервер, «Перенаправитель WebDAV»».
После успешной установки службы можно закрывать окно. Оная пока не будет запущена, да это и не важно: нужно сначала внести изменения в реестр операционной системы (об этом далее) и перезагрузить компьютер. После служба эмулятора WebDAV будет запускаться автоматически.
4. Необходимо изменить логику работы клиента WebDAV, используемого в Windows, хотя бы частично сняв ограничение на максимальный размер файла, который можно сохранить на сетевой диск (сокращенный вариант инструкции из FAQ по WDMRC) и изменить способ авторизации.
Этот шаг важен, потому что без изменений параметров WebDAV в реестре Windows у вас могут появляться самые разные ошибки. Не забудьте перезагрузить компьютер после изменений.
Скачайте и запустите вот этот файл из архива по ссылке и перезагрузите компьютер. Либо, если вы не доверяете всему, что скачиваете из интернета, измените записи в реестре вручную:
- Нажмите Win+R, наберите regedit, нажмите OK
- Идите по дереву в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters
- Щёлкайте правой клавишей мыши по BasicAuthLevel, выбирайте Изменить…
- В поле Value пишем 2, нажимайте OK.
- Щёлкайте правой клавишей мыши по FileSizeLimitInBytes, также выбирайте Изменить…
- В поле Значение пишите ffffffff, жмите OK.
- Закрывайте окно, перезагружайте компьютер (обязательно!).
5. Нужно подготовить .bat файл, подключающий и переподключающий сетевые диски. Создайте файл connect.bat в Блокноте всего с тремя строчками текста:
Первая строчка удалит диск, если он был подключён. Вторая — подключит Облако. Команда exit закроет консоль, чтобы чёрное окно исчезло само.
Помимо перечисленных выше проблем в части про установку, диск может не подключиться по банальной причине: установленная служба не будет запущена. Убедитесь, что служба WebDavMailRuCloud запущен (процесс wdmrc.exe от пользователя «Система» либо «System»).
На втором месте идёт блокировка
Запустите этот файл двумя щелчками мыши. От имени администратора запускать не нужно, иначе не все программы будут видеть подключенные диски. Если всё успешно, в папке Компьютер появится новый диск M: (буква может быть любая, указанная вами, но не совпадающая с существующими физическими дисками). Если при подключении требует пароль, сообщает об ошибке 67, значит — вы не применили твик реестра из предыдущего шага и, возможно, не перезагрузили ПК. Или указали неверный порт.
Служба WDMRC должна заранее знать, что у вас несколько учётных записей, потому что к одному порту можно подключить один диск. Если при установке указали мало портов, нужно переустановить службу.
UPD: Изначально параметра «/persistent:no» в инструкции не было. Громаднейшее спасибо Александру Яфарову за то, что обнаружил, исследовал и решил проблему. Без этого параметра в команде «net use» Windows начинает запускается на 30-40 секунд медленнее, потому что при каждой загрузке пытается самостоятельно восстановить подключение к диску. Но так как WDMRC запускается только после полной загрузки операционной системы, когда появляется Рабочий стол, подключиться у системы не получится. Параметр «/persistent:no» сообщает Windows, что сетевой диск после перезагрузки подключать не надо. Скрипт сам это сделает.
1. Нажмите Win+R, выполните «services.msc», в открывшемся списке сервисов найдите WebDavMailRuCloud, кликните по строке правой кнопкой мыши — Остановить.
2. Создайте .bat файл с тем же содержанием, что для установки, добавив команду удаления:
3. Запустите файл от имени администратора, служба установится и, чтобы не перезагружать ПК для её запуска, в том же окне служб снова найдите WebDavMailRuCloud, жмите правой кнопкой — Запустить.
Всё, можно подключать несколько Облаков.
Если что-то идёт не так, замените команду exit на pause и окно закрываться не будет. Тогда вы увидите информацию о возможной ошибке и сможете спросить меня о решении в комментариях к этой статье.
Учтите, что программа wdmrc.exe — это такой же сервер WebDAV, как и любой другой, просто запускается на вашем ПК. Все возникающие ошибки при подключении ничем не отличаются от ошибок коннекта к любому другому серверу, находящемуся в интернете или локальной сети.
6. Перенесите созданный вами файл connect.bat в папку автозапуска, чтобы диски Облака подключались при включении компьютера. Чтобы не искать, где у вас находится папка «Автозагрузка», нажмите сочетание клавиш Win+R и введите «shell:startup«.
Копируем connect.bat в папку Автозагрузка
Есть, правда, парочка нюансов, которые могут подпортить жизнь:
1) Пароли от вашей учётной записи будут легкодоступны для копирования. Достаточно открыть connect.bat Блокнотом и всё как на ладони. Так как пароль от Облака является одновременно паролем от почты и других сервисов Мейла.ру, подобная открытость не радует.
2) Если у вас не быстрый компьютер, команда на подключение сетевых дисков может запуститься раньше службы WebDAVCloudMailRu и подключения Интернета. Тогда диски в системе не появятся.
Поэтому, если диски после включения компьютера у вас не подключаются автоматически, предлагаю превратить connect.bat файл в программу и запускать её не через папку Автозапуск, а через Планировщик заданий. Это не защитит ваши пароли на 100%, но от любопытных неумелых глаз скроет и добавит необходимую паузу после запуска Windows.
6.1. Скачайте программу Bat To Exe Converter (она бесплатна) и распакуйте в любую папку. (UPD от 7.06.2018: Убрал ссылку на домашний сайт утилиты и залил проверенную мной версию. Спасибо читателю под ником «_. _» — он заметил, что на домашней странице Bat To Exe Converter теперь майнер. Сама программа в порядке).
6.2. Запустите Bat To Exe Converter, выберите созданный connect.bat и укажите, что приложение должно быть невидимым:
Нажмите «Компилировать» и… поздравляю, вы скомпилировали свою первую программу! Созданную программу connect.exe можно будет запускать для подключения и переподключения сетевого диска.
6.3. Чтобы сетевой диск подключался автоматически, скомпилированный батник должен стартовать при запуске Windows. Как я уже писал выше, в автозагрузку его добавлять не следует, так как сетевая часть операционной системы инициализируется спустя некоторое время после появления Рабочего стола и поэтому команда net use может не сработать. Нужен Планировщик задач. Панель управления — Администрирование — Планировщик заданий или правой кнопкой по кнопке Пуск — Управление компьютером — Планировщик заданий, кнопка Создать задачу. На первой вкладке введите имя задачи, на «Триггеры» — «При входе в систему», пользователь — тот, под которым вы сидите, укажите задержку задачи 5 минут (см. скриншот ниже), на вкладке «Действия» укажите запуск созданного скомпилированного батника и, в общем-то, это всё.
В триггере нужно указать задержку срабатывания
7. Перезагрузите компьютер или вручную запустите connect.exe (connect.bat, если решили не заморачиваться с пунктами 6.1-6.3). Если всё сделали правильно, в папке «Этот компьютер» появится новый диск.
Читайте также: