与朋友共享文件真的这么难吗?

介绍 Pafera 文件服务器,这是一个小型 Android 服务器,现已发展成为功能齐全的文件管理器、幻灯片查看器和媒体服务器
2023-04-17 22:41:37
👁️ 819
💬 0

内容

  1. 介绍
  2. 候选人
  3. 解决方案
  4. 那么这是如何实现的呢?
  5. 安装服务器
  6. 浏览文件
  7. 系统菜单
  8. 文件菜单
  9. 使用幻灯片放映
  10. 配置
  11. 未来计划

介绍

哇!这真的很酷。你能和我分享一下吗?

作为一个不断拥有新设备和新应用的科技人士,我记不清在聚会、会议,甚至是等地铁的时候,有多少次有人对我说过上述这句话。

然而,我清楚地记得我们多少次以以下对话告终:

当然可以!你用什么?
朋友 嗯,我有应用程序 A。
嗯...我没有。你有应用程序 B 吗?
朋友 没有,我也没有。你有方法 C 吗?
好的。我们试试看。嗯……连接不上。我们用方法 D 怎么样?
朋友 这也不起作用。

自从计算机在黑暗时代出现以来,共享文件就一直是一项常见的任务。首先,热心的程序员们兴高采烈地查看彼此的打印输出,然后变成了复制穿孔卡片。后来,磁盘成为新的热门趋势,然后技术转向光盘、烧瓶驱动器和无线传输。

然而,似乎 70 年后,我们仍然处于一个阶段,我们无法轻松地分享可爱的柴犬视频,除非我们经过繁琐的程序、下载奇怪的应用程序或借助缓慢的无线传输。

我们尝试一些不同的东西怎么样?

候选人

但是吉姆,你觉得我每天共享文件都没有问题吗?

好吧,让我们来看看人们用来传输文件的常用方法。

方法 失败
1.空投 你能通过 AirDrop 连接到 Android 手机吗?好的!
2. 附近分享 你能通过 NearBy Share 将文件分享到 iPhone 吗?嗯...
3. AirDroid、SHAREit、Resilio Sync、Send Anywhere 等... 你会告诉公交车站的某个人快速安装和你一样的应用程序,以便他们能够接收文件吗?好吧!
4. 聊天程序 许多聊天程序会限制您可以发送的文件类型,重新压缩您的高清视频,并且您必须等待文件缓慢上传,然后下载到朋友的设备。我们还遇到了方法 3 的问题,您必须安装相同的聊天程序才能传输文件。
5.蓝牙 即使使用蓝牙 5,传输 700MiB 的高清视频就像在佛罗里达潮湿的天气里看着油漆变干一样。
6. 电子邮件 大多数电子邮件服务都会限制附件大小,而且传输速度甚至比通过聊天程序传输还要慢。不过,我一直觉得 iPhone 用户为了打印文档而给自己发电子邮件的故事相当有趣。;)
7.DropBox、OneDrive等... 遇到与方法 3 和 4 相同的上传/下载问题。
8. USB 闪存盘 实际上这非常可行而且快捷,但你必须记得随身携带一个,并且要有合适的适配器来与朋友的设备连接。我自己一直把一个放在口袋里,但你与之共享的人的设备是否支持你的驱动器则是一个不确定的问题。
9. 让你的朋友用他/她的手机相机拍摄你的手机屏幕的照片/视频! 传输劣质数据的成功率为 100%!
当共享不起作用时会发生什么?

目前我们的情况看起来不太好,不是吗?

解决方案

简而言之,为了成为一个有效、通用的解决方案,我们需要一些

  1. 可以在所有设备上使用
  2. 支持直接 WiFi 传输,无需上传到服务器并返回
  3. 不会将我们的 4K 视频重新压缩成 480p。
  4. 在没有手机信号的地方也能工作

现在,如果每台设备上都预装了某种东西,能够使用普遍接受的协议访问其他计算机,并且能够上传/下载文件……

某物...

喜欢...

一个...

网络浏览器!

Windows CE 支持 HTML 5?太棒了!

那么这是如何实现的呢?

那么网络浏览器如何传输文件呢?

有三个基本步骤。

  1. 让两个设备连接到同一个无线网络/热点
  2. 让您的朋友在其浏览器中输入您设备的地址
  3. 随意浏览、查看、下载和上传
即使到了 2023 年,使用手机自己的热点仍然是传输文件的最快方式,尤其是在山上徒步旅行时!

这种方法的优点是

  1. 适用于任何具有网络浏览器的设备(即现在的几乎所有设备)
  2. 您不必逐个点击每个文件,按下发送,然后等待您的朋友接受。您的朋友可以自行查看他们想要的内容并下载文件。
  3. 您可以让一群人同时浏览,而不必一个接一个地浏览。

当然,该服务器无法在 iPhone 和 iPad 上运行,因为 Apple 不仅限制对 iOS 设备文件系统的访问,而且除非您使用 Cydia 获取 root 权限,否则您也无法运行 Linux 程序。

幸运的是,您只需要*一个*设备即可运行服务器,因此您的 Apple 朋友仍然可以毫无问题地连接到您的 Android 手机并下载和上传文件。此外,他们已经习惯了无法使用其他系统,因为 AirDrop 仅适用于 Apple 设备。;)

安装服务器

为了提高速度和效率,Pafera 文件服务器是一款用 Rust 编写的 Linux/Windows 应用程序,因此很遗憾,您不能直接在应用商店下载它。如果有人愿意付钱给我,我以后可能会用 Kotlin 制作一个应用商店版本,但除非你是 Jerry Maguire,否则你现在只能使用 Rust 版本。

幸运的是,许多比我聪明得多的开源程序员聚集在一起创建应用程序,让您可以在 Android 手机上运行 Linux 程序,并取得不同程度的成功。

因此,您所要做的就是在手机上安装 Termux,复制并粘贴两个命令,然后按几次 Enter。这不是一键安装,但也不是 SpaceX 建造的 StarShip,您将可以访问另一个很酷的程序生态系统。

这是你吸毒后的大脑……呃……是 Termux 上的手机。

安装如下:

  1. 下载 Termux 应用 来自 F-Droid 或者 来自 Codeberg
  2. 启动应用
  3. 将以下内容复制并粘贴到终端中,然后按回车键。

    curl -O https://pafera.com/installfileserver.sh
    
  4. 将另一个命令复制并粘贴到终端中,然后按回车键。

    bash installfileserver.sh
    
  5. 对于包升级过程中出现的任何提示,请按键盘上的 Enter 键。
  6. 让您的朋友输入屏幕上显示的 URL。

    在显示内容中查找 URL

现在,一旦您安装了服务器,您可以随时退出,只需退出 Termux 会话即可。

如果你想使用允许更改的密码重新启动服务器,请输入

./paferafileserver password=yourpasswordhere

进入 Termux,或者只需按向上箭头选择您之前输入的命令。

虽然并不像下拉通知并点击“附近共享”那么简单,但您也不会意外运行服务器,而且您可以获得更多功能来避免麻烦。

如果您恰好是一名 Rust 程序员,那么安装对您来说就容易得多。

你所要做的就是输入

cargo install paferafileserver

等待货物完成,瞧!您就完成了!

如果您想在 Windows 或 Linux 上运行 Pafera 文件服务器,下面提供了预构建的二进制文件 7-Zip 档案。

  1. Linux(amd64)
  2. Android 7+ 上的 Termux
  3. Linux(用户空间上适用于 Debian 的 armv7h - Android 5 和 6)
  4. Windows 独立 exe
  5. Windows 完整版(包括 FFMpeg 和 ImageMagick)

浏览文件

一旦您的朋友设法在其浏览器中输入您的服务器的 URL,他们的手机应该看起来像这样。

Pafera 文件服务器主页

如果您没有看到任何文件,请确保您的朋友已启用 JavaScript,因为我们使用脚本对文件进行排序和显示。

作为快速入门,从左上角开始是系统菜单按钮、最近文件按钮和主目录按钮。

点击文件

单击任意图像缩略图将开始幻灯片放映,单击文件名将下载文件。

单击文件的菜单按钮将打开该文件的操作菜单,单击其下方的方块将选择该文件。

要快速选择一系列文件,请单击第一个文件的选择按钮,然后单击最后一个文件的菜单按钮并选择“选择到这里”。

系统菜单

系统菜单弹出

搜索和深度搜索(热键 t 和 f)均允许您输入几个字母并查看包含这些字母的所有文件。

不同之处在于,普通搜索仅查看当前文件夹中的文件,而深度搜索还会查看此文件夹内的所有文件夹。

幻灯片放映和深度幻灯片放映(热键 z 和 x)遵循相同的逻辑。根据您是否要包含此文件夹内所有文件夹中的图像来选择所需的幻灯片放映。

切换视图(热键 v)从普通详细信息视图更改为此文件夹内所有图像和视频的图标视图。

排序(热键 s)可让您选择文件的排序方式。您可以选择使用文件的名称、大小、日期和时差来对文件进行排序。我个人更喜欢时差视图,因为“五分钟前”对我来说比“14:55”更有用。

最近文件视图(热键 e)将显示当前文件夹内最近更改的 512 个文件以及此文件夹内的所有文件夹。将此视图用于主文件夹时请小心,因为如果您有数十万个小文件需要检查,则可能需要一段时间才能检查所有文件。

设置密码(热键 w)将允许您的朋友输入密码以修改、上传和删除文件。没有此密码,任何人都无法更改您手机上的任何内容,因此请妥善保管。您可以在命令行中输入以下代码来设置它: password=yaddayaddayadda 或者在 paferafileserver.cfg 中使用格式

{
  "password":"yaddayaddayadda"
}

新建文件夹(热键 o)将提示您输入在当前文件夹内创建的新文件夹的名称。

显示隐藏文件(热键 i)将切换以句点开头的文件和文件夹的显示,Unix 使用它来表示这些文件通常不应该对用户可见。

启用一键下载(热键 k)后,您只需单击文件即可立即下载文件,而不是显示在浏览器中。

显示热键(热键 h)将向您显示在文件夹视图和幻灯片视图中可以使用哪些键。

放大(热键 .)和缩小(热键 ,)将改变屏幕上所有内容的大小。如果您不喜欢系统的默认大小,请使用这些按钮自定义您的页面。

文件菜单

文件菜单弹出窗口

选择此处可让您选择您之前选择的文件和本次选择的文件之间的所有文件。它非常方便,可以避免在桌面和移动设备上替换用于复制链接的右键菜单。

全选(热键 a)和全不选(热键 n)是不言而喻的。使用它们删除您删除的所有文件时要小心 真的 想要删除所有文件。

发送(热键 g)将打开一个扫描窗口,您可以在其中看到网络上运行 Pafera 文件服务器的所有其他设备。

发送文件到另一台服务器

请注意,所有设备必须位于同一子网中,并在同一个端口上运行,因此如果您位于 192.168.0.100 上,而您尝试发送的设备位于 192.168.1.100 上,则扫描仪将无法检测到其他设备。当然,您始终可以登录该设备的服务器并使用浏览器上传文件。

为简单起见,您发送到另一台设备的所有文件都收集在服务器根目录下名为“已接收”的文件夹中。我稍后可能会更改此设置,但就目前而言,让所有新文件都显示在同一文件夹中很方便,您稍后可以将它们移动到适当的位置。

已接收文件夹中的新文件

下载(热键 l)、重命名(热键 r)、移动(热键 m)、复制(热键 c)、删除(热键 d)和永久删除(p)都可以同时处理多个文件,但移动浏览器上的下载除外,因为移动浏览器一次只能下载一个文件。但要小心,因为永久删除实际上意味着 永恒的 删除。在点击删除按钮之前,请务必将重要文件的副本存储在另一台设备上。

取消删除(热键 u)仅适用于已删除一次且具有“.deleted”扩展名的文件。它 不能 恢复永久删除的文件。那些文件不是令人怀念的。它们已经过去了。那些文件不再存在。它们是前文件。

使用幻灯片放映

幻灯片放映界面。底部的所有内容均可点击。

人们总是要求文件浏览器提供出色的幻灯片放映功能。当您在手机上随身携带 6,000 张儿子的照片,向陌生人炫耀时,不难看出原因。;) 大多数 SMB 客户端没有图像预览或幻灯片放映功能,因此尝试使用 iPhone 文件应用查找某张特定图像会让人相当沮丧。

Pafera 文件服务器中的幻灯片放映功能可以通过几种不同的方式激活:

  1. 单击图像的缩略图。
  2. 从系统菜单中选择“幻灯片放映”。
  3. 从系统菜单中选择“深度幻灯片放映”。
  4. 进行搜索或深度搜索以选择您想要展示的文件,然后 然后 单击第一张图片的缩略图。

无论您如何开始幻灯片放映,最顶部都会有一个删除按钮,上面带有当前图像的名称,底部会有一个工具栏,其中包含随机、旋转、退出、前进和后退功能。

如果您想转到某个图像编号,只需单击工具栏上的图像位置,输入所需的编号,然后从那里转到。

选择要前往的号码

幻灯片放映支持滑动手势,这实际上是我在手机上首选的导航方式。你只需将拇指向左轻扫即可转到上一张图片,向右轻扫即可转到下一张图片,向上轻扫即可删除当前图片,向下轻扫即可退出幻灯片放映。

如果您使用的是笔记本电脑或将蓝牙键盘连接到手机,则使用幻灯片放映会变得更加容易。

左箭头 上一张图片
右箭头 下一张图片
向上箭头 删除图片
向下箭头/退出 退出幻灯片放映
r 随机图像
转到图片编号
逆时针旋转 90 度
顺时针旋转 90 度

配置

Pafera 文件服务器可以通过同一文件夹中名为 paferafileserver.cfg 的 JSON 文件进行配置,也可以通过 key=value 形式的命令行参数进行配置。如果同时指定了两者,则命令行参数将覆盖配置文件设置。

常见的命令行是

paferafileserver [hostname=localhost] [serverroot=/home/jim] [password=password] [ip=0.0.0.0] [port=9999]

因此,如果你想要为端口 5000 上的所有访问者提供 Jim 的图片目录,你可以使用

paferafileserver serverroot=/home/jim/Pictures port=5000

如果您不指定 serverroot,它将默认为您的主目录。

如果不指定ip和端口,则默认为0.0.0.0:9999。

此外,可以在命令行中输入以下选项 以禁用某些功能,即使用户拥有正确的密码。

disabledelete
disablerename
disablemove
disablecopy
disablenewfolder
disabledelete
disablepermanentdelete
disablesend
disableupload

所有命令行参数也可以在当前文件夹中名为 paferafileserver.cfg 的 JSON 文件中指定,例如

{
  "hostname":               "JimsLaptop",
  "password":               "SecretPassword12345",
  "disabledelete":          1,
  "disablepermanentdelete": 1
}

您可以选择最适合您的方法。

对于 Windows,最简单的方法是创建可执行文件的快捷方式并在快捷方式中指定参数。

对于 Android 上的 Termux,启动可执行文件的最简单方法是从 F-Droid 安装 Termux Widget 应用程序并在小部件的脚本内配置命令行。

未来计划

目前还没有计划进行进一步的更改,因为这只是一个有趣的入门项目,可以用来玩 Rust,但如果其他人

  1. 编写 Kotlin/Swift 版本以供应用商店使用
  2. 将此应用翻译为多种语言
  3. 创建各种 CSS 主题
  4. 实现类似 rsync 的备份和恢复算法
  5. 或者您能想到的任何其他内容

我当然欢迎对这个简单项目的任何补充。

与往常一样,我希望你们觉得这个应用程序有用,如果你想根据自己的目的定制它,我随时可以作为技术顾问。玩得开心!

关于作者

Jim 自 90 年代获得 IBM PS/2 以来一直从事编程工作。直到今天,他仍然喜欢手写 HTML 和 SQL,并且在工作中注重效率和正确性。