很多读者提到过一个问题:如何在各个设备间传输文件,但是无论讨论多少工具,这类话题往往会被「微信」和「QQ」给终结。为什么专业的文件传输工具却比不上两款聊天软件?究其原因,这两个聊天工具胜出的原因有两点——常驻后台、内外网通用。

但实际上这两款工具有不少的限制,微信发给手机的文件大小不能超过 100MB,QQ 上传大文件的速度也比较慢。而且从安全和隐私的角度来讲,在外网传输文件时会经过腾讯的服务器,一想到自己的文件也许在不经意间向服务器上留了一份档案,总觉得有点不适。

在使用微信和 QQ 之余,能不能有什么方法,起码在内网实现安全快速的传输呢?macOS 和 iOS 环境下,内网有 AirDrop,外网有 iCloud,本身的体系足够完善;Windows 环境下也有 OneDrive 作为文件存储服务,但近距离分享、内网分享文件就稍显逊色,需要借助一些第三方的工具才能实现。

今天就来讲讲我在 Windows 和手机之间的文件互传方案,实现更快速更高效,且不限容量的内网传输方法。当不在局域网内时也能用云盘实现文件双向同步。

在这些方法之外,还需要注意的是文件的传输逻辑,临时处理一下的文件、需要保存在手机上的文件、需要自动同步的文件,我会讲讲我是如何理解这些文件传输方案。最后给出一些在 Windows 上优化 WebDAV 使用体验的方法。

注:下文讲解的方法将以 Windows + iOS 为例,但同样适用于 Windows + Android。

传输文件的思路

在不同的设备上传输文件的软件有很多,传输思路可以分为两类:无线传输有线传输。无线传输分为蓝牙、局域网、广域网,有线传输则可以通过 USB 直传、软件传输、U 盘传输。

对于 iOS 设备而言,有线连接需要安装 iTunes、驱动、第三方软件,否则 USB 直传只能传输照片。无线传输方面,蓝牙不能直接传输文件(AirDrop 除外)。所以这些方式不作考虑,最方便的方案当属无线传输方案了,分别是——

  1. 局域网传输:在同一个路由器下传输文件。优点是传输速度快,信号好时可以达到内网满速传输(取决于路由器);缺点是两个设备必须在局域网内才能传输。

  2. 广域网传输:QQ、微信、iCloud、各种云盘都属于这一类工具,文件通过服务商搭建的服务器,传送到另一个设备上。优点是随时随地可以传文件;缺点是会经过服务器,速度由这些工具决定,不适合传输大文件。

这 2 种方法有各自的优势和缺点,相比之下,广域网传输并不可靠谱,而局域网传文件则没有那么普及,本文就来讲讲我通过局域网 + WebDAV 传输文件的方法,顺便讲讲如何通过支持 WebDAV 的网盘实现相对稳定的双向同步。

如何用 WebDAV 传文件

局域网传输文件的方法其实有很多,通过 WebDAV、FTP、SMB 等传输协议都可以传输。其中 WebDAV 协议是在移动设备上最易于使用的一种。不仅启用和关闭很方便,在另一台设备上只需一个浏览器就可以访问,不需要安装多余的应用。自然成为了首选。

想要通过 WebDAV 传输文件,需要让一台设备搭建 WebDAV Server 变身为「服务器」,让另一台设备访问它。这样,两台设备就能建立连接,相互传输文件了。

这里有两个要点:如何搭建 WebDAV Server、如何访问它。看上去很麻烦,实际上这两个步骤已经有不少工具可以替我们做到了。

选择支持 WebDAV 的工具

由于 iOS 自带的文件管理工具 Files 并不支持 WebDAV 等文件传输协议,所以我们需要安装一个可以提供 WebDAV 的工具。如今已经有许多应用已经支持在应用内启用 WebDAV Server 了——iOS 的文件管理器 Documents by Readdle、阅读应用多看阅读、视频播放器 nPlayer 都可以实现在手机上一键开启 WebDAV Server。开启后,局域网内的其他设备就可以通过 WebDAV 访问到它。

传输文件的方式

接下来我们以 Documents 为例,来讲解三种通过 WebDAV 进行文件传输的方法。

Documents 本身是一款功能强大的文件管理器,能够实现解压缩、添加云端设备、下载文件等操作。在传文件方面提供了多种文件传输方式:启用 WebDAV Server 传输、扫码传输、网盘双向同步等。

手机开启 WebDAV Server、扫码匹配

Documents 提供了两种内网传输的方式,在设置中启用上面提到的 WebDAV,并在 PC 端访问设备的 IP 地址,就可以连接到 iOS 设备上。

具体操作:

  1. 在 Documents 的「设置 - WebDAV」中设置用户名和密码,点击「开始 WebDAV」启用 WebDAV Server。
  1. 启用后会出现该设备的内网 IP 地址:192.168.XXX.XXX。在 PC 设备上输入该设备的 IP。
  2. Documents 会有一步特殊的验证步骤,需要填写验证码,确认是本人操作。就可以访问到 Documents 中的文件了。

除了手动启用 WebDAV 在另一台设备上访问,Documents 还提供了另一种快捷的方法来建立内网连接,那就是扫码匹配

具体操作:

  1. 打开 Documents 的「服务 - Wi-Fi 传输」功能。
  2. 根据提示,在 PC 端访问 https://docstransfer.com 这个网址,用手机扫码后就会在两台设备之间建立连接。

通过扫码连接后的地址,我们会发现其实仍然访问到了内网 IP。网站上的二维码是一串以 rdwifitransfer:// 开头的 URL Scheme,我猜测后面的代码是加密过的 PC 设备 IP,从而让这两台设备建立起连接。思路有所不同,但实现的结果是一样的。

PC 搭建 WebDAV Server

既然能在手机上创建 WebDAV,那能不能在 PC 端创建 WebDAV Server 来让手机访问呢?当然可以,而且 Windows 内置了这项功能。只不过操作起来比较麻烦,多达 11 个步骤,需要开启 IIS,并手动设置、分配权限。

具体步骤:

  1. 在 PC 设备上,打开控制面板,进入「程序 - 启用或关闭 Windows 功能」。
  2. 找到「Internet Information Services - Web 管理工具」和「万维网服务」项。启用其中的「IIS 管理服务」「 IIS 管理控制台」「Windows 身份验证」「WebDAV发布」「目录浏览」这五项,并确定安装。
  3. 完成安装后,你会在开始菜单的「Windows 管理工具」中找到新增的「Internet Information Services」工具,打开。
  4. 在 IIS 管理器中,右键「Default Web Site」,打开「添加虚拟目录」界面。选择一个路径,并命名一个别名。访问时别名会作为 URL 的一部分。
  5. 选中虚拟目录,进入「WebDAV 创作规则」,在右侧选择「添加创作规则」,直接确定。
  6. 选中虚拟目录,进入「身份验证」,启用「Windows 身份验证」。
  7. 选中虚拟目录,进入「目录浏览」,在右侧点击「启用」。
  8. 选中「Default Web Site」,进入「WebDAV 创作规则」,在右侧选择「启用 WebDAV」。
  9. 右键「Default Web Site - 管理网站 - 重新启动」。
  10. 在 PC 端浏览器中输入 http://127.0.0.1/虚拟目录名称http://localhost/虚拟目录名称/ 就可以访问 WebDAV服务器中的内容了。
  11. 想通过手机端访问,你还需要在命令行中输入「ipconfig」命令,来查看 PC 设备的内网 IP。然后在手机端的 Documents 访问 http://内网 IP/虚拟目录名称,比如 http://192.168.1.109/虚拟目录名称 来建立连接。

步骤中有一步是「添加虚拟目录」,实际上就是让你选择「需要通过 WebDAV 共享的文件夹」。

由于这一套流程是固定的,为了不让图片占据太多篇幅,这些步骤你可以在 @Vasilisyl 的 CSDN 博客 找到更详细的图文版。搭建完毕之后,局域网内的其他设备都可以通过 WebDAV + IP 地址的方式来访问 PC 设备上的「虚拟目录」文件,只有当 PC 开机时才能访问。

在 iOS 设备上添加 WebDAV 服务器的步骤下面就会提到。

双向同步:像 iCloud 一样用 WebDAV

iCloud 一直有一个令人羡慕的功能:让桌面、文档文件夹在多个设备之间同步。其实这并没有太大困难,只要有了对应的工具,我们也可以很容易做到。

这一步用到了外网传输,需要其他网盘提供商为我们提供中转服务。iCloud 是苹果提供的功能,Windows 设备无缘享受,我们可以用微软的亲儿子 OneDrive 来实现。如果要在一众网盘中挑选,我比较推荐的两个服务是 Dropbox 和坚果云。坚果云除了自己的客户端之外,还可以通过 WebDAV 来串联各种服务。

以坚果云为例,首先需要让 PC 端的文件夹实时同步到坚果云中,然后在手机端用 WebDAV 建立起同步连接。这样就能实现文件的双向同步。

连接之前,要先到「坚果云的网页版 - 账户信息 - 安全选项 - 第三方应用管理」中,创建应用授权码,来保证账号安全。然后将桌面文件夹设置为同步文件夹,等待文件上传到服务器。再进行下面的操作。

具体操作:

  1. 在 Documents 中的「服务 - 添加账号 - WebDAV 服务器」中输入坚果云的 URL、用户名、授权码,建立起连接。
  2. 进入服务器,选择桌面文件夹后的「…」,点击同步,就能让两边的文件通过坚果云双向同步。

这套操作也适用于 OneDrive、Dropbox、Google Drive,以及任意一款支持 WebDAV、FTP、SFTP 的网盘工具。比如我自己就是用 NAS 开启 WebDAV Server 来实现多个设备同步的。

我的文件传输逻辑

学会了上面几种通过 WebDAV 传文件的方式,再来看看我对文件传输的理解。

在多个设备上管理文件时需要有一个基本认识:将主要存储文件的设备作为主要设备,其余设备均为附属品。文件在发送到附属设备上时,最好在主要设备上保留一份。这样,当你在附属设备上将文件处理完毕后(包括处理完毕后发送回主要设备),就可以没有后顾之忧地删除这份文件。

传输临时文件

在 PC 和手机设备的关系中,我们倾向于将 PC 作为主要设备,手机属于附属品。在这套逻辑下我们不必在手机上建立一个完整的文件管理系统,只需要「能够处理文件」即可。平板设备亦然。

在这层关系下,不必考虑文件的后续留存,只希望以最快的速度将文件从一个设备复制到另一个设备,处理完毕后及时发送回来即可。这套流程是「传输、处理、回传」,内网传输就是一个方便的途径,扫码传输是我的首选

比如当我想对一份 PDF 进行手写签字时,我的第一反应是打开 PC 端的文件传输页面,并打开 iPad 的 Documents 进行扫码(传输)。等 PDF 传输完毕后,在 iPad 端进入 GoodNotes 签字(处理)。之后把文件重新发送回 Documents,PC 端下载这份签完字的文件(回传)。此时 iPad 起到了一个「签字板」的作用。

再比如我想在 iPhone 上截图并套壳后发送到 PC,我会先在 iPhone 上完成截图、套壳处理(处理)。然后到 Documents 中启用 WebDAV Server,用 PC 访问后就可以直接看到 iPhone 中的相册并下载截图(回传)。

凡是需要一次性传输就可以删除的文件,压缩包、视频、图片、PDF 这些都可以算作属于临时文件。适用于这套「传输、处理、回传」的流程。

传输存储文件

除了上面这种把移动设备作为纯粹处理工具的做法之外,还有一种是需要留存到移动设备上的。比如希望在 iPad 上读书、做笔记,阅读完毕之后再将笔记发送到 PC 归档。这种情况下,传输文件的思路是否有所变化呢?

主要文件的传输思路是「传输、存储、处理、回传」。这里看上去只是多了一个「存储」的步骤,但为了实现这一步,让我们传文件的思路也发生了一些改变。

在 PC 和 iOS 设备的关系中,iOS 的文件管理格局和 Windows 是有很大区别的,应用文件的不互通,让用户难以将所有文件很好地组织起来。所以,如果你希望将 iPad 作为主要设备,就应当避免同类型的文件分散在多个应用中,需要在 iPad 上确立几个主要文件类型的处理工具

比如查看、编辑 PDF 文件,我会选择只用 GoodNotes 一款工具,而不会想着同时用 PDF Expert 和 Notability 几种工具混合使用。视频文件只用 nPlayer、阅读器只选多看阅读……以此类推,给常用的文件类型都找到一个合适的查看编辑工具。在这些确定好的工具中存储数据。这样在希望回看某个类型的文件时能够方便地找到它。

这些主要文件类型的处理工具,除了本身需要有很高的质量,还需要挑选那些支持 Wi-Fi 传输的应用,比如 nPlayer、多看阅读这些工具吸引我的一点就是支持 WebDAV 传输。

那些不支持 Wi-Fi 传输的工具,也应当选择支持「导出到其他应用」功能的应用,比如 GoodNotes 支持多种格式导出、多看阅读支持将笔记导出到印象笔记。

像 iBooks 这类苹果自家的应用则几乎不支持导出书籍和笔记,这类应用希望将你捆绑在它的生态圈内。除非没有替代品,我一般不会考虑使用这些应用。

此时,传输文件的操作就分散在了不同的应用之中,比如用 nPlayer 传输视频,用多看阅读传输书籍……他们都是使用 WebDAV 作为协议的,使用思路和前面没有太大的区别,你仍然可以在这些应用中顺畅地传输文件。

自动同步文件

自动同步文件这种情况比较实用,在两台设备上协同处理文件。因为我们没办法做到每时每刻都记得要传什么文件到手机上。比如在家里写了一半的文稿就去赶火车了,往往会懊恼忘记把文稿传到手机上继续写。

这种情况就要用到上面提到的「双向同步」了,将文件通过网络存储到服务器中,在手机上同步下来编辑,接着自动同步回服务器,下次打开电脑时就会自动更新文档了。

这个操作在云盘服务商的 App 中就能够实现,但我使用的是 NAS 自带的 App,其中无法直接编辑文本,所以我选择在 Documents 中使用 WebDAV 进行同步操作并编辑文本。这个操作也属于我文件传输逻辑中的一环。

当然,你也可以使用「Windows 上搭建 WebDAV Server」的方法,但由于只能在局域网内生效,需要在 PC 开机状态下,打开手机上的 Documents 来同步一次文件。否则双脚迈出了家门就无法同步了。

识别内外网的传输工具

最后这类是以 Send AnyWhere 为首的文件传输工具,它的优点在于通过 PIN 码自动识别内外网设备。实现不同网络下采用不同的方式传输。但由于通过外网传输时,国内传输速度被限制的很严重,往往需要上传很久,在 PC 端下载时也需要下载很久。出现了「外网传输速度慢,内网传输用不上」的尴尬局面,所以我在尝试了一段时间之后还是放弃了。

但这类工具的未来是很有市场的,因为这样的工具不需要用户搞清楚什么是内网外网,什么是 WebDAV,什么是传输协议,只要上传和下载就完事了。只是目前的市场还不足以孕育出国内的 Send AnyWhere,最接近 Send AnyWhere 的竟然就是 QQ(能做到内外网识别),所以也应该正确看待 QQ 的传输功能,将其作为传输体系的一部分。

PC 端体验优化

最后的这部分是 PC 端的优化,这是为了在 PC 上传输文件时能有更好的体验。

当我使用局域网传输临时文件时需要访问浏览器。Documents 提供了一个网页版的交互界面,只是在浏览器中操作并不方便,不支持拖拽修改文件,复制粘贴也不太符合 Windows 的逻辑。不同的应用有不同的网页交互界面。

由于 WebDAV 是标准传输协议之一,既然应用自己做的网页版不方便,那我就用一些工具,将 WebDAV 改造成一个本地硬盘。我们可以用一款免费的磁盘映射工具 RaiDrive 来管理手机上的文件。

这里还会遇到一个问题,由于多数路由器会采用 DHCP 来分配内网的 IP 地址,手机每次接入 Wi-Fi 时,它的 IP 地址都会改变。

在路由器中绑定 IP 地址

为了解决它,我们可以在路由器中将 iOS 的 MAC 地址和内网 IP 绑定,使得手机的内网 IP 地址保持不变,比如固定为 192.168.1.103。

最后,在 RaiDrive 中设置手机的 WebDAV 的路径:192.168.1.103:80(http 的默认端口为 80,https 为 443)、用户名、密码。在需要传输文件时就可以一键连接到手机,并在文件管理器中像处理本地文件一样对手机上的文件进行处理。同样,你可以给 iPad 也设置一个固定的内网 IP。

不过这个方法不适用于照片管理,Documents 用了特殊的方法让用户能够在浏览器中直接管理手机照片,这不属于 WebDAV 的一部分,想管理照片还是得去网页版。

总结

我在 第 13 期奏折 中介绍 FireFox Sand 时,提到过我对文件传输工具的看法。

微信、QQ 这类社交工具占据了绝大多数工作场景。小文件用微信传一下似乎变成了一种不言自明的默契,尽管大家都知道微信的桌面版有多难用,但为了避免发送接收双方的麻烦,还是不得不用。

偶尔会有朋友向我抱怨用 QQ 上传一个文件为什么这么慢。我认为,很多人用 QQ 和微信可能并不是觉得它们最好用,而仅仅是因为「方便」和「不折腾」,在传输小文件时,使用这种方法无可厚非。

但在局域网环境下,文件传输体验还是有优化空间的。通过本文给出的方案,每个人都能轻松实现更快的传输速度、更好的传输体验。作为 QQ 传输的补充。

别看文章这么长,实际操作部分其实可以概括成「下应用、开 WebDAV、开浏览器」这么简单。重要的是文件传输的思路,为何要传输到移动端,怎么传输更快更好,传输后怎么管理,这才是本文的重点。