# HTTP 服务快装指南


  • 你是否还在使用 QQ、微信、XX 网盘,“悄悄”传输公司内部文件给其他同事?
  • 你是否还在为 XX 网盘们那有限的传输速度而苦恼?
  • 你是否还在使用分片压缩,以绕过文件传输有体积大小的限制?
  • 你是否还在为多平台传输文件,在多终端下安装上述的客户端?

那么是时候做出改变了……!

有没有一种可能,借助浏览器,通过 HTTP 协议,浏览、下载指定文件夹下的文件呢?例如这样:

http-service-demo

下面介绍 2 种方式,快速开启文件浏览的 HTTP 服务。让你做到“安全”、简单、快速,和同事分享文件。


# 使用 Python 快速开启 HTTP 服务

如果没有安装 python,请先安装 python,且建议安装 python 3 (opens new window) ,停止使用 python 2。

# Python 3 下开启 (opens new window)

首先使用命令行,进入到期望使用 HTTP 对外放开的文件夹下;键入以下命令:

python -m http.server
1

python 会在 8000 端口开启 HTTP 服务,使用浏览器访问:http://127.0.0.1:8000 即可预览效果。

因为这里要分享给同事,那么需要将这里的 IP 地址,换成本机的 IP 地址;另外,可以指定端口号,如果本地的 8000 端口已经被占用的情况下,可以换到另外空闲的端口。

python -m http.server --bind 192.168.18.8 9001
1

这样,让其他人访问:http://192.168.18.8:9001 即可预览效果。

使用提示

目前发现这个方法有点小问题,在 Windows 下,有时候会出现访问后,导致 python 崩溃的情况;猜测可能是文件名含有中文、特殊符号的原因,建议使用这种方法,将文件名命名为纯英文,不要包含特殊的符号。


# 使用 nginx 开启 HTTP 服务

nginx - A high performance web server and a reverse proxy server. (opens new window)

作为目前最流行的 web 服务器,nginx 只需简单配置,即可将一个文件夹下的内容,通过 HTTP 对外进行暴露。

值得一提的是,nginx 支持 Windows 平台,且官方提供预编译好的二进制文件。

这里,笔者以 OpenResty 为例,如果使用 nginx,其配置步骤,和使用 OpenResty 没有区别。

nginx 的配置文件为:conf\nginx.conf

http 空间下,新增一个 server 的配置,内容如下:

server {
    listen       9002;
    server_name  localhost;

    location / {
        autoindex on;
        autoindex_exact_size on;
        autoindex_localtime on;
        root D:\YourDiskName\TheDirYouWantToShow;
    }
}
1
2
3
4
5
6
7
8
9
10
11

随后,让访问者访问:http://YourMachineIP:9001 即可下载文件。

最终的效果,参考文章开头的样例图片。


# 优劣势的分析

这种方案的优劣势也是非常明显的,分析如下:

优势:

  1. 在内网环境下可以快速分享文件给一个网络下的同事,没有传输文件大小的限制、没有传输速度的限制(对比走公网 XX 网盘来说)。因为是内网环境,可以默认环境安全
  2. 若使用 Python ,可以快速开启这样的文件浏览、下载的服务,可以分享任意文件夹下内容
  3. 若使用 nginx 再配合 Windows 自启动选项,可以实现开机后,自动开启服务,不需要每次都输入 python 命令,且 nginx 稳定性更高,完美支持中文文件名
  4. 通过 HTTP 、浏览器的组合拳,抹平了多个系统的差异性,天然跨端
  5. 相比于 SMB、网络邻居等方案,无需额外设置权限,只提供读取的选项,更加简单

劣势:

  1. 只能在一个网络下分享,有时候不同网段下,两台机器不能互相访问的情况下,无法使用这样的方法分享文件
  2. 文件只读,无法写入文件
  3. “无法” 对公网用户暴露这样的服务