自用的一个文件服务器,方便自己传输文件。

jan-bar · · 658 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

## 【[github地址](https://github.com/jan-bar/UpDownFile)】 ## UpDownFile 简易上传下载文件服务器,针对场景为临时需要上传或下载单个文件,完成后直接关闭服务器就完事了。 1. 可以使用url访问,会显示一个简易web页面,可以在这个web页面**上传下载**文件,以及进行文件的排序。 2. 也可以使用wget或curl命令行工具上传下载文件,多种选择,总有一个是你想要的方式。 3. 增加秘钥选项,使用后上传下载传输的数据全都加密,且秘钥每次都随机,有crc和时间戳校验,安全性极高。 4. 使用加密选项时,无法通过web展示目录页面(前端加密代码不想写),可通过本程序命令行实现加密上传下载。 5. 本工具作为客户端时可以实现断点上传或断点下载。提示里面有服务器和客户端命令行,可以参考。 6. 成功执行后会显示帮助命令,可以复制改改就能用,非常方便。 7. wget用`-c`,curl用`-C -`可以实现断点下载,可使用`curl -C - -T`实现断点上传。我的cli命令行使用`-c`可以支持断点**上传**和**下载**。 8. 可以执行`.\UpDownFile -reg -s 127.0.0.1:8080`在同级目录下产生`addRightClickRegistry.reg`的注册表文件,双击reg文件添加右键菜单。 ![image.png](https://static.studygolang.com/210201/8e7726ed0b9646b03cec6ea0c2be9abf.png) 9. web页面展示如下图所示,支持断点下载,支持web直接上传: ![image.png](https://static.studygolang.com/210201/61d948f044fc30879a121431b3f803de.png) 10. 确保文件正确性,增加计算md5值功能,服务器端会自动计算md5值,使用cli工具时也会计算md5值,包括加密传输时也会正确计算md5值。 ```bash GET >e:\1.txt 100% 9d684b1f28fbde1b730681673d83530e GET >e:\2.jpg 100% f7d3bb804a1fbb12b8eff77785a1bc4c POST>e:\dos2unix 100% 3a7237e306544a12b5d0438fadc55f03 ``` 11. 加密的秘钥包含时间戳,只允许10秒内的有效秘钥(秘钥随机生成),安全性高。 执行:`UpDownFile -h`,可查看服务端帮助信息: ```shell Usage of UpDownFile: -e string password -p string path (default ".") -reg add right click registry -s string ip:port -t duration server timeout (default 30s) ``` 执行:`UpDownFile cli -h`,可查看客户端帮助信息: ```shell Usage of UpDownFile cli: -c Resumed transfer offset -d string <raw string> or @tmp.txt -e string password -o string output -t duration client timeout (default 1m0s) ``` 执行:`UpDownFile`会打印辅助信息,里面有使用curl和wget的上传下载文件命令。 ```bash UpDownFile -s 127.0.0.1:8080 -p C:\dir -e password url: http://127.0.0.1:8080 server: UpDownFile -s 127.0.0.1:8080 -p C:\dir -t 30s -e password registry: UpDownFile -s 127.0.0.1:8080 -reg cli get: UpDownFile cli -c -e password http://127.0.0.1:8080/tmp.txt cli post: UpDownFile cli -c -e password -d @C:\tmp.txt http://127.0.0.1:8080/tmp.txt Get File: wget -c --content-disposition http://127.0.0.1:8080/tmp.txt curl -C - -OJ http://127.0.0.1:8080/tmp.txt Post File: wget -qO - --post-file=C:\tmp.txt http://127.0.0.1:8080/tmp.txt curl --data-binary @C:\tmp.txt http://127.0.0.1:8080/tmp.txt curl -F "file=@C:\tmp.txt" http://127.0.0.1:8080/ Get Offset: curl -H "Content-Type:application/janbar" http://127.0.0.1:8080/tmp.txt wget -qO - --header "Content-Type:application/janbar" http://127.0.0.1:8080/tmp.txt Put File: curl -C - -T C:\tmp.txt http://127.0.0.1:8080/tmp.txt ``` ## 使用详解 正常的上传下载没啥可说的,可以通过web页面也可以通过curl或wget命令。 但是断点上传的功能我只找到了curl命令支持,不过需要指定上传断点位置。 因此可以使用如下命令得到curl断点上传命令,直接执行返回的命令就可以断点上传: ```shell curl -H "Content-Type:application/janbar" http://127.0.0.1:8080/tmp.txt curl -C 9662 -T file http://127.0.0.1:8080/tmp.txt wget -qO - --header "Content-Type:application/janbar" http://127.0.0.1:8080/tmp.txt curl -C 9662 -T file http://127.0.0.1:8080/tmp.txt curl -C - -T tmp.txt http://127.0.0.1:8080/tmp.txt curl -C 9662 -T file http://127.0.0.1:8080/tmp.txt ``` cli支持断点上传,只需带上`-c`参数即可,内部实现自动获取断点位置,一步到位: ```shell UpDownFile cli -c -d @tmp.txt http://127.0.0.1:8080/tmp.txt ``` 断点下载`curl`,`wget`,以及我的cli工具均支持,没啥好说的,都在示例里面。 ## 总结 该工具主要方便我传输文件使用,例如客户端是过了好几个跳板机的设备,那么我只需要在服务器上 运行该工具,就可以在客户端上方便的传输文件。并且支持加密传输,也不怕被人拦截, 秘钥只有10秒有效,可以防止中间人模拟请求搞攻击。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

658 次点击  
加入收藏 微博
4 回复  |  直到 2021-12-01 17:34:54
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传