GoWebDAV,随时随地访问windows电脑上的文件

news/2025/3/29 7:40:22/文章来源:https://www.cnblogs.com/jameswohu/p/18791571

GoWebDAV

使用 WebDAV 分享本地文件,轻量、易于使用

English | 简体中文

特性

  • 基于 Golang 实现,性能高。

  • 最终编译为单二进制文件,不需要 Apache 等环境,依赖少。

  • 支持浏览器访问。

  • 可以在同个端口下启用多个 WebDAV 服务,各自有不同的挂载目录、用户名密码。

  • 良好的 Docker 支持。

快速开始

从 https://github.com/117503445/GoWebDAV/releases 下载二进制文件

运行

./gowebdav
 

GoWebDAV 会自动在 ./data 路径下创建示例文件,文件结构如下

> tree ./data
./data
├── public-writable
│   └── 1.txt
├── public-readonly
│   └── 1.txt
└── private-writable└── 1.txt
 

使用浏览器访问 http://localhost:80,就可以看到 3 个不同的 GoWebDAV 服务了。

index

其中 http://localhost:80/public-writable 是 public-writable 服务,映射了本地的 ./data/public-writable 文件夹。它是无用户验证的、可写的。可以在浏览器中查看文件内容,也可以进行上传、删除等操作。

public-writable

http://localhost:80/public-readonly 是 public-readonly 服务,映射了本地的 ./data/public-readonly 文件夹。它是无用户验证的、只读的。可以在浏览器中查看文件内容,但不可以进行上传、删除等操作。

public-readonly

http://localhost:80/private-writable 是 private-writable 服务,映射了本地的 ./data/private-writable 文件夹。它是有用户验证的、可写的。在使用 user1 和 pass1 登录以后,可以在浏览器中查看文件内容,也可以进行上传、删除等操作。

private-writable

当然,除了浏览器,也可以使用其他 WebDAV 客户端工具进行访问。

可以通过指定 dav 参数来配置 WebDAV 服务的本地路径、用户验证、是否只读等属性,详情见 使用 章节。

使用

./gowebdav --help # 查看帮助./gowebdav --addr 127.0.0.1 # 在 127.0.0.1 监听,默认监听 0.0.0.0
./gowebdav --port 8080 # 在 8080 端口监听,默认监听 80 端口./gowebdav --dav "/dir1,/data/dir1,user1,pass1,true" # 配置文件夹路径及属性
 

dav 参数可以指定 WebDAV 服务的本地路径、用户验证、是否只读等属性。

每个本地路径都可以配置一个 WebDAV 服务,使用分号分隔。例子:

  • "/dir1,/data/dir1,user1,pass1,true;/dir2,/data/dir2,null,null,false" 描述了 2 个服务,分别是将文件夹 /data/dir1 映射至 WebDAV 服务 /dir1,将文件夹 /data/dir2 映射至 WebDAV 服务 /dir2

对于每个服务,需要使用逗号分隔 5 个参数,分别是 服务路径,本地路径,用户名,密码,是否只读。其中用户名和密码都为 null 时表示不需要验证。例子:

  • "/dir1,/data/dir1,user1,pass1,true" 描述了将 /data/dir1 映射至 /dir1 服务,访问需要的用户名和密码分别为 user1 和 pass1,只读(禁止上传、更新、删除)。
  • "/dir2,/data/dir2,null,null,false" 描述了将 /data/dir2 映射至 /dir2 服务,访问不需要验证,可读写。
  • "/dir3,/data/dir3,null,null,true" 描述了将 /data/dir3 映射至 /dir3 服务,访问不需要验证,只读。

特别的,如果只有 1 个服务且名为 /,则可以直接访问 http://localhost:80 而不需要指定服务名。例子:

  • "/,/data/dir1,user1,pass1,true" 描述了将 /data/dir1 映射至 / 服务,访问需要的用户名和密码分别为 user1 和 pass1,只读。

当 dav 未指定时,GoWebDAV 默认使用的 dav 参数为。

 /public-writable,./data/public-writable,null,null,false;/public-readonly,./data/public-readonly,null,null,true;/private-writable,./data/private-writable,user1,pass1,false

 

Docker

准备分享的本地文件夹路径为 /data/dir1 和 /data/dir2

docker run -it -d -v /data:/data -e dav="/dir1,/data/dir1,user1,pass1,true;/dir2,/data/dir2,null,null,false" -p 80:80 --restart=unless-stopped 117503445/go_webdav

 

在浏览器中打开 http://localhost/dir1 和 http://localhost/dir2,就能以 WebDAV 的形式访问磁盘文件了。

通过环境变量 dav 传递 data 参数,通过 -p 80:80 指定映射的端口。

Docker Compose

services:go_webdav:image: 117503445/go_webdavrestart: unless-stoppedvolumes:- /data:/dataenvironment:- "dav=/dir1,/data/dir1,user1,pass1,true;/dir2,/data/dir2,null,null,false"ports:- "80:80"

 

如果需要在非 root 用户的环境下使用 Docker 运行 Gowebdav,可以参考 nonroot。

配置

GoWebDAV 支持通过环境变量、命令行参数、配置文件等方式配置 WebDAV 服务,本文的上述例子是 GowebDAV 的典型使用方式。如果上述例子无法满足你的需求,可以参考 配置。

安全

GoWebDAV 使用 HTTP Basic Auth 进行验证,账号密码未经加密,毫无安全性可言。如果涉及重要文件、重要密码,请务必用 Nginx 或 Traefik 等代理服务器套一层 HTTPS。

GoWebDAV 目前没有直接支持 HTTPS 的计划,因为我认为 HTTPS 涉及域名、证书定期申请,这些工作都应当在上层代理服务器中完成。

开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/905487.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF MVVM入门系列教程(命令)

WPF中的命令模型 在WPF中,我们可以使用事件来响应鼠标和键盘动作。但使用事件会具备一定的局限性,例如:我想通过键盘快捷键触发事件、或者在某个时刻禁用事件。如果使用代码去编写这些控制逻辑,会变得非常枯燥。因此WPF提供了命令模型。 命令具有多个用途。 第一个用途是分…

【读文总结】transformers circuits 随笔

【读文总结】transformers circuits 随笔内容有点太多,先截图一份 contents对 transformers 结构的重刻划 一种常见的 decoder only 的 transformer 结构如下。但是我们可以把这个 residual stream 的线抻直,将这个过程视为 transformer layer 对 residual stream 中所包含的…

vue+leaflet示例:结合geoserver实现地图空间查询(附源码下载)

demo源码运行环境以及配置运行环境:依赖Node安装环境,demo本地Node版本:14.19.1。 运行工具:vscode或者其他工具。 配置方式:下载demo源码,vscode打开,然后顺序执行以下命令: (1)下载demo环境依赖包命令:npm i (2)启动demo命令:npm run dev (3)打包demo命令: n…

tinygo window安装和使用

支持的型号https://tinygo.org/docs/reference/microcontrollers/ 下载win版本https://github.com/tinygo-org/tinygo/releases 新建环境变量D:\Program_Files\tinygo\bin 验证tinygo version 在 VSCode 中创建一个新的文件,命名为 hello.gopackage main import "fmt&q…

基于ARM微处理器的无线串口集线器的总体设计

1 引言 随着21世纪科学技术的不断进步,无线与移动通信相应得到了迅猛的发展。方便快捷的无线接入和无线 互连等新概念和新产品,已逐渐融入人们的工作领域和日常生活中。由于如今对无线频率的大量使用,使无线频率资源日渐匮乏,短距离宽带无线通信技术受到世界许多国家工业界…

Pycharm中配置基于深度学习模型Yolov5的入门车辆识别Python项目

基于Yolov5的入门车辆识别 环境部署 ANACONDA环境 Anaconda官网下载:https://www.anaconda.com/download/ 进入会显示需要注册,直接跳过即可选择对应的系统版本下载安装注意选择安装位置(建议不要安装在C盘)没什么其他特别选项,直接安装即可 安装完成后使用win+r输入cmd打…

在PyCharm中提升编程效率:通义灵码(DeepSeek)助手全攻略(新版)

最近小栈在PyCharm中使用了阿里的 通义灵码 插件还不错,本次就再分享一个好用的AI代码助手,让编码过程更加方便!作者:ISEE小栈 转载来源:「ISEE小栈」微信公众号 最近小栈在PyCharm中使用了阿里的 通义灵码 插件还不错,本次就再分享一个好用的AI代码助手,让编码过程更加…

vue+leaflet示例:矢量瓦片展示(附源码下载)

demo源码运行环境以及配置运行环境:依赖Node安装环境,demo本地Node版本:14.19.1。 运行工具:vscode或者其他工具。 配置方式:下载demo源码,vscode打开,然后顺序执行以下命令: (1)下载demo环境依赖包命令:npm i (2)启动demo命令:npm run dev (3)打包demo命令: n…

vue+leaflet示例:图层管理控件样式优化(附源码下载)

demo源码运行环境以及配置运行环境:依赖Node安装环境,demo本地Node版本:14.19.1。 运行工具:vscode或者其他工具。 配置方式:下载demo源码,vscode打开,然后顺序执行以下命令: (1)下载demo环境依赖包命令:npm i (2)启动demo命令:npm run dev (3)打包demo命令: n…

2025西安交大集训Day4:单调栈,单调队列,线段树

2025西安交大集训Day4:单调栈,单调队列,线段树 引入 何为单调栈?顾名思义,单调栈即满足单调性的栈结构。与单调队列相比,其只在一端进行进出。 为了描述方便,以下举例及伪代码以维护一个整数的单调递增栈为例。 过程 插入 将一个元素插入单调栈时,为了维护栈的单调性,需要…

日事清甘特图制作工具:一键生成,精准管理项目周期

还在为制作甘特图而焦虑吗?别担心,日事清甘特图重磅登场,轻松帮你完美化解难题,让复杂任务规划变得简单高效!在工作中,我们很多岗位都经常需要对项目进度进行追踪,例如人事经理需要要追踪招聘进度或员工培训计划, 项目经理负责监督项目的各个阶段以保证按计划执行, 软…