沙滩星空的博客沙滩星空的博客

WebDAV文件共享协议

WebDAV简介

WebDAV 基于 HTTP 协议的通信协议,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

WebDAV客户端

Windows挂载/映射

  1. 开启服务: 从 计算机管理 - 服务和应用程序 - 服务 找到 WebClient。启动服务,并设置启动类型为 自动
  2. 挂载: 打开 计算机 ,点右键 添加一个网络位置,按向导填入地址,用户名,密码。

也可用命令直接挂载:

net use Y: https://dav.engr-z.com:5006/ /user:yourname /persistent:YES yourpassword

其中 yournameyourpassword 替换成实际的用户名和密码

/persistent 表示保存映射,下次开机还在。

执行完,打开资源管理器,可以看到磁盘映射了。
如果下次开机,发现不能打开磁盘,访问失败,可以检查 WebClient 服务是否开启。

修改文件大小限制

在某些版本的 Windows 操作系统中,WebDAV 驱动器的最大文件大小被限制为 50MB。如果你试图复制超过 50MB 大小的文件,Windows 就会弹出错误提示框。

错误 `0x800700DF:` 文件大小超出允许限制,无法保存

这个限制可以通过修改注册表消除:

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\FileSizeLimitInBytes

FileSizeLimitInBytes 键值由 50000000(50MB) 修改为更大的值。最大值为: 十六进制: ffffffff 或 十进制: 42949672954G

使用 net use 命令删除访问位置和凭据

# 清除所有的访问连接以及对应的账户信息;
net use * /del

net use \\192.168.0.8 /delete
net use \\192.168.0.8\sharedir /delete

# 使用指定的账户和密码,访问网络共享;
net use \\192.168.0.8 yourPassword /user:yourname

Linux客户端挂载

安装服务:

apt install davfs2

挂载:

sudo mount -t davfs http://dav.engr-z/ ./webdav/

第三方客户端 RaiDrive

RaiDrive 是一款能够将一些网盘映射为本地网络磁盘的工具,支持 Google Drive、Google Photos、Dropbox、OneDrive、FTP、SFTP、WebDAV。

据说使用 RaiDrive,没有 http 和 上传文件大小限制,无需修改注册表。

WebDAV服务端

文件大小限制

如果是基于 Nginx 转发 WebDAV 请求,默认限制上次文件在 1M 内。
在配置文件添加: client_max_body_size 4096M; 配置

基于Nginx的 WebDAV Server

在Nginx中实现WebDAV需要安装 libnginx-mod-http-dav-ext 模块,
apt install libnginx-mod-http-dav-ext

以下是Nginx的配置:

server {
        listen 80;
        listen [::]:80;

        server_name dav.engr-z.com;
        auth_basic "Authorized Users Only";
        auth_basic_user_file /etc/.htpasswd;

        location / {
                root /data/webdav;
                client_body_temp_path /var/temp;
                dav_methods PUT DELETE MKCOL COPY MOVE;
                dav_ext_methods PROPFIND OPTIONS;
                create_full_put_path on;
                client_max_body_size 10G;
        }
}

server {
        listen 443;
        listen [::]:443;
        server_name dav.engr-z.com;

        ssl on;
        ssl_certificate /data/www/cert/dav.engr-z.com_nginx/cert.pem;
        ssl_certificate_key /data/www/cert/dav.engr-z.com_nginx/cert.key;
        ssl_session_timeout 5m;
        ssl_protocols SSLv2 SSLv3 TLSv1;
        ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers on;

        location / {
                root /data/webdav;
                client_body_temp_path /var/temp;
                dav_methods PUT DELETE MKCOL COPY MOVE;
                dav_ext_methods PROPFIND OPTIONS;
                create_full_put_path on;
                client_max_body_size 10G;
        }

}

基于Go的 WebDAV Server:


网络存储文件共享之WebDAV https://zhuanlan.zhihu.com/p/352216119
无法访问网络共享怎么办?教你一个“必杀技” https://zhuanlan.zhihu.com/p/474532352
Nginx 反向代理 WebDAV 服务 不能上传、新建、重命名文件及文件夹的解决办法 https://blog.csdn.net/qq_44937183/article/details/120566252
使用Nginx搭建WebDAV文件服务器 https://candyraws.github.io/posts/nginx-webdav/
nginx配置功能完整的webdav服务器 https://opswill.com/articles/ngnix-full-webdav-server-setup.
nginx webdav模块实现http协议上传文件 https://blog.csdn.net/qq_43164571/article/details/121207554

未经允许不得转载:沙滩星空的博客 » WebDAV文件共享协议

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址