Webdav не копирует большие файлы

Обновлено: 04.07.2024

Если бы в качестве введения я начал расписывать достоинства облачных хранилищ данных, ты бы подумал, что меня только что разморозили после двадцатилетнего анабиоза или что я серьезно злоупотребляю снотворными :). Поэтому скажу кратко, по-программистски: когда передо мной встала задача сделать программу, которая могла бы без привязки к 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. Программист, разработчик видеоигр, независимый исследователь. Старый автор журнала «Хакер».

Облачные хранилища данных становятся всё более востребованными, как среди частных пользователей, так и среди компаний. При этом некоторые интернет сервисы хранения файлов предоставляют возможность доступа к своему облаку по протоколу 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.

Возможные проблемы и их решение

При появлении проблемы подключения важно определить, какую именно ошибку сообщает программа – чтобы делать правильные действия для её устранения.

В первую очередь необходимо проверить, правильно ли в команде набран протокол и адрес webdav сервера, например, для Яндекс.Диска должно быть:

Во-вторых, проверить разрешение сетевого имени – сервер должен быть доступен:

Если сервер неизвестен или не отвечает, то явно что-то не так с интернет подключением.

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

Поэтому при этой ошибке я проверяю, что пароль введён правильно и находится между адресом сервера и параметром /user .

Действия с хранилищем в командном файле

Как проверить, что хранилище подключено

Проверка того, что подключение установлено, и сервер доступен, может потребоваться в командных файлах. Её можно выполнить командой IF EXIST.

Например, cmd/bat файл для подключения WebDAV проверяет, если диск уже подключен, то сразу выходит:

Или cmd/bat файл резервного копирования проверяет перед выгрузкой, что сетевой диск доступен:

Копирование файлов по WebDAV

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

Автоматическое подключение сетевого диска

Возможность для автоматического подключения сетевого диска при загрузке компьютера на самом деле уже есть и включается параметром /persistent:yes (см. выше).

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

Та же проблема возникает, если в автозагрузку вставить только команду подключения:

Подключение сетевого диска с проверкой и повтором

Чтобы сделать более надёжное решение, использую cmd/bat файл с проверкой результата и повтором попытки:

В случае ошибки NET USE попытка подключения повторяется через 1 минуту. Задержка делается с помощью ping, подробнее см. Как сделать задержку в командном файле.

Этот командный файл можно запускать вручную или через автозагрузку.

Чтобы не мешало чёрное окно bat файла, можно спрятать его путём запуска через wsh скрипт, см. Скрыть консольное окно.

Файлы для скачивания

См. также


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

Содержание

Подключение сетевого диска по протоколу 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.

Примечание. OneDrive не поддерживает подключение по протоколу davs в Linux.

Первый способ. Подключение из файлового менеджера

  • Откройте файловый менеджер. В зависимости от файлового менеджера расположение опции для подключения может отличаться. Затем, например в файловом менеджере Nemo нажмите на Файл > Подключение к серверу.


Второй способ. Монтирование сетевого диска по протоколу WebDav

Во время установки вас спросят, хотите ли вы, чтобы непривилегированным пользователям было разрешено монтировать ресурсы WebDAV. Выберите Да.

  • Создаем папку в которую будем монтировать сетевой диск и папку для хранения конфигурации:

Вместо папки nextcloud можно указать свое название.

  • Продолжаем:
  • Ограничиваем права доступа к папке для только владельца:
  • Редактируем файл secrets:

В конце файла нужно вставить ссылку на подключение и данные для авторизации. Пример для подключения облака NextCloud:


В конце файла добавляем ссылку на подключения с именем и паролем и конфигурацией монтирования. Пример для подключения к NextCloud:


  • Добавляем себя в группу davs2:
  • Команда монтирования диска:
  • Команда для размонтирования:

Где nextcloud – это ваша папка названия сетевого диска (этап 2 в данной инструкции).

Поддержка Windows Vista Пакет обновления 1 (SP1) закончилась 12 июля 2011 г. Чтобы продолжать получать обновления для системы безопасности Windows, убедитесь, что вы работаете в Windows Vista с Пакет обновления 2 (SP2). Дополнительные сведения можно найти на этой веб-странице Майкрософт: прекращение поддержки некоторых версий Windows.

Проблемы

Невозможно скопировать имя файла:не удается прочитать исходный файл или диск

Эта проблема также возникает на компьютере с Ос Windows Vista или Windows XP Пакет обновления 1 (SP1), на компьютере с установленным обновлением безопасности 896426 (MS05-028).

Попробуйте еще раз отменить

Причина

Эта проблема возникает, потому что изменение безопасности, которое было введено в Windows XP SP2, влияет на перенаправление WebDAV. Это изменение безопасности позволяет убедиться, что несанкционированный сервер не может ввести клиентский компьютер в атаки типа "отказ в обслуживании". При попытке скачать файл размером более 500 000 000 м, клиентский компьютер интерпретирует скачивание как атаки типа "отказ в обслуживании". В связи с этим процесс скачивания прекращается.

Решение

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

Windows XP с пакетом обновления 2 (SP2), Vista или 7: исправление ошибки для меня

Обратите внимание, что это исправление не работает с Windows 8 или более поздней.

После того как вы будете следовать мастеру Fix it, необходимо ввести значение FileSizeLimitInBytes, которое больше размера файла, который вы хотите скачать.

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

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

Самостоятельное решение проблемы

Чтобы устранить эту проблему, выполните следующие действия:

Windows XP с пакетом обновления 2 (SP2), Vista или 7: нажмите кнопку "Начните", выберите "Выполнить",введите "regedit" и нажмите кнопку "ОК".

Windows 8 или более поздней по экрану: проведите пальцем справа направо, чтобы отобрать чудо-кисти, а затем выберите "Поиск" и введите regedit (или введите regedit с экрана "Начните"). Выберите regedit в результатах поиска, чтобы запустить его.

Найдите и откройте следующий подраздел реестра:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters

В правой области щелкните правой кнопкой мыши значение
FileSizeLimitInBytes и выберите
"Изменить".

Если значение
FileSizeLimitInBytes не видно, щелкните правой кнопкой мыши пустое место в правой области, выберите "Новое", выберите значение DWORD,введите FileSizeLimitInBytes и нажмите кнопку
"ОК".

Обратите внимание на то, что по умолчанию ограничение размера файла составляет 500000000.

Закройте редактор реестра. Перезагрузите компьютер.

Проблема устранена?

Проверьте, устранена ли проблема. Если устранена, пропустите дальнейшие инструкции, приведенные в этом разделе. Если нет, обратитесь в службу технической поддержки.

Некоторые пользователи Windows 10 сталкиваются с ошибкой 0x800700DF: размер файла превышает допустимый предел и не может быть сохранен при попытке скопировать или переместить определенные папки из или в онлайн-хранилище резервных копий.

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

Вот список потенциальных виновников:

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

1. Настройка значения FileSizeLimitInBytes через редактор реестра.

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

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

Чтобы упростить вам задачу, мы собрали серию пошаговых инструкций, которые проведут вас через процесс проверки текущего значения FileSizeLimitInBytes и его изменения для соответствия файлу, с которым у вас возникла проблема 0x800700DF:


  1. Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем в текстовом поле введите regedit и нажмите Ctrl + Shift + Enter, чтобы открыть редактор реестра с правами администратора.Открытие редактора реестра
  2. Когда появится запрос UAC (Контроль учетных записей пользователей), нажмите Да, чтобы предоставить доступ администратора.
  3. Как только вы окажетесь на экране редактора реестра, используйте меню с левой стороны, чтобы перейти к следующему месту: HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services WebClient Parameters

Примечание. Вы можете перемещаться сюда вручную или вставить местоположение прямо в панель навигации, чтобы попасть туда мгновенно.

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

2. Включение службы веб-клиента (если применимо)

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

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

Несколько затронутых пользователей, с которыми мы ранее сталкивались с кодом 0x800700DF, сообщили, что проблема исчезла быстро после того, как они открыли экран «Службы» и убедились, что службе WebClient разрешено запускаться и настроена так, чтобы ее можно было вызывать в действие, когда это необходимо.

Следуйте приведенным ниже инструкциям, чтобы убедиться, что служба веб-клиента включена для разрешения ошибки 0x800700DF:

  1. Нажмите клавишу Windows + R, чтобы открыть диалоговое окно «Выполнить». Затем, когда вам будет предложено текстовое поле «Выполнить», введите «service.msc» и нажмите клавишу «Ввод», чтобы открыть экран «Службы» в Windows 10. В UAC (запрос учетной записи пользователя) нажмите «Да», чтобы предоставить доступ администратора.Открытие экрана услуг
  2. На экране «Службы» перейдите в правую часть экрана и найдите имя службы WebClient.
  3. Увидев его, щелкните его правой кнопкой мыши и выберите «Свойства» в появившемся контекстном меню.Доступ к меню свойств
  4. Находясь на экране «Свойства» службы WebClient, перейдите на вкладку «Общие» и измените тип запуска на «Вручную», затем нажмите кнопку «Пуск», чтобы принудительно включить службу, если она в настоящее время отключена.Включение службы веб-клиента
  5. Убедившись, что служба веб-клиента включена, повторите действие, которое ранее вызывало ошибку 0x800700DF, и посмотрите, устранена ли проблема.

Если проблема все еще не устранена, перейдите к следующему потенциальному исправлению ниже.

3. Изменение файловой системы в локальном хранилище.

Если вы столкнулись с этой проблемой только при попытке загрузить файлы, размер которых превышает 4 ГБ в локальном хранилище, вы явно видите 0x800700DF из-за ограничения, вызванного вашей файловой системой.

Скорее всего, вы пытаетесь загрузить файл на диск с файловой системой FAT32, которая поддерживает файлы размером не более 4 ГБ, в отличие от NTFS, которая поддерживает файлы размером до 16 ТБ.

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

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

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