android - 在 Android 和 Node.js 之间传输大文件

标签 android node.js react-native usb

我有一个拍照 Android 应用程序(用 React Native 编写,但如果需要,我可以添加 native 模块),它与用户计算机上的图库类型应用程序(用 Electron 和 React 编写)配对。照片数量可能很大(我们一次有超过一千张照片),并且需要将它们传输、未压缩和未裁剪到计算机应用程序。我需要一种可靠的方法来做到这一点,而无需先通过 Internet 路由数据。

我尝试过的东西

Node USB : 看起来是一个不错的库,但是如果用户的计算机上没有安装驱动程序就无法使用。该驱动程序随后似乎替换了默认的 Windows USB 驱动程序,并且手机将无法通过正常方式(在 Windows 中打开文件资源管理器)访问。也许有某种方法可以“即时”切换驱动程序,仅在传输照片时使用驱动程序,然后在完成后将其切换回系统驱动程序?

ADB :这是我尝试过的原始解决方案,它完全符合我的需要,但存在两个破坏性问题:一方面,手机需要启用开发模式,另一方面,ADB 似乎无法识别所有设备(我们例如,让它与 LG V20 一起工作时遇到了很多麻烦)。这个问题的理想答案是没有这两个问题的亚行。

WiFi路由 :我们将手机连接到与主机相同的WiFi网络,使用WebSockets通过互联网握手IP,然后通过WiFi网络发起直接连接。如果我找不到任何其他解决方案,这可能是我会去的。此选项的最大问题是需要相对大量的手动设置。我们的用户往往不太精通技术,我不知道假设他们家中有 WiFi 有多么合理。无论如何,这不能是转移的唯一选择。此外,通过无线网络传输千兆字节的照片会导致同一网络上的每个人的速度变慢。

系绳路由 :我们将手机连接到计算机,并以与上述步骤大致相同的方式启动直接连接。这种方法的缺点是只有带有 SIM 卡的手机才能激活网络共享(并非我们所有的手机都有 SIM 卡,因为连接不是我们需要的主要目的),而且计算机上的所有其他流量现在都将通过手机路由,这对拥有 SIM 卡的客户的数据上限不利。此外,无法以编程方式打开网络共享,只能调出网络共享菜单;这不是一个太大的破坏者,但其他两个非常。

蓝牙 : 基本满足我的要求,但是数据传输率太低,比wifi低一个数量级。

WiFi直连 :我实际上并没有尝试这个,因为我找不到让 PC 接受 WiFi Direct 连接的工作方式。它 promise 提供卓越的速度,但我发现没有任何模块或库可以帮助我启用它。

SD卡 :最低的低技术方法,只需将所有内容保存到 SD 卡,然后让客户取出卡并将其插入他们的计算机。除了需要 SD 卡端口(不保证客户端的计算机或他们的电话)之外,是否可以使用此方法。

明显的 :手动将所需文件从手机拖放到PC。这就是我们现在做事的方式,它充满了问题。在传输过程中,由于某种原因,文本文件的最后 15-20 个字符被切断;由于 MTP 不强制在手机上重新扫描媒体的已知问题,设备上的许多照片最初并未显示;并且用户有时会将文件放在错误的位置,从而导致不必要的支持电话。这种方法肯定需要更换。

我已经为这个问题寻找了两个月的解决方案,很难相信没有人有过这样的 Android 用例。已经明确指出,Android 和 PC 之间的 USB 通信非常重要,我确信有一些程序可以做到这一点,Windows 可以从它开始。然而,尽我所能,没有开箱即用的解决方案。有没有人处理过这样的问题?你的解决方案是什么?你会如何处理这个问题?

最佳答案

在安卓上下载大文件时推荐使用下载管理器,它支持进度条、通知等很多原生功能,下载任务也由操作系统处理,效率更高。

React Native Fetch Blob 库支持此功能

关于android - 在 Android 和 Node.js 之间传输大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425595/

相关文章:

android - 我可以在同一个 Activity 中同时运行多个加载程序吗?

css - 在 native react 中将图标左对齐,文本居中

java - 图像变化时添加声音

node.js - Protractor 安装上的 node-gyp 错误

node.js - Electron 运行多个主进程与多个浏览器窗口

javascript - 创建没有签名的 JWT token ?

javascript - 如何设置复选框中的选中值

android - react native : Migrate to AndroidX

android - Android 4.0 应用程序可以与 Android 2.0 和 Android 3.0 设备一起使用吗?

android - 如何替换从 Xml 文件获取的字符串的过程