🍕HelpUploadFiles
🍺简介
HelpUploadFiles (星空上传助手) 是一款 辅助上传 工具。我们知道,git 提供了 .gitignore 文件用于根据规则忽略某些文件的上传,但是这个功能仅限于 git,还有很多场景涉及文件的上传,比如我们可能需要将某些文件上传到网盘,但是大部分网盘并不具备 根据规则忽略指定文件 的功能,这十分不方便。另外,还存在着许许多多的上传文件的场景,此时,HelpUploadFiles 油然而生!
由于对于单个文件,不需要特别的规则进行忽略上传,故 HelpUploadFiles 主要是针对 文件夹 的上传场景。
🍺文件上传概念的推广
HelpUploadFiles 涉及的文件上传并不仅仅局限于将本机文件上传到网盘这种场景,在 HelpUploadFiles 中,凡是需要 将某个文件夹发送到某一个接口 的操作均可推广为文件上传。
以下场景均可视文件上传概念的推广:
- 将本机文件夹上传到网盘。
- 将本机文件夹发送到另一台设备(如局域网内设备、服务器对象存储服务等)。
- 将本机文件夹发送到压缩软件等接口。
🍻验证通过的应用场景
以下场景均已验证通过:
- Chromium 浏览器 涉及的文件夹上传
- Edge 浏览器 涉及的文件夹上传
- 百度网盘客户端
- 腾讯微云客户端
- 阿里网盘
- 天翼网盘客户端
- 中国移动硬盘客户端
- 联通网盘
- 谷歌云端硬盘
- 小飞机网盘
- 奶牛快传
- 123云盘
- 华为云对象存储服务 OBS
- 阿里云对象存储服务 OSS
- 腾讯云对象存储服务 COS
- LocalSend
- Send Anywhere 客户端
- WinSCP
- 7z、Bandizip、360压缩等压缩软件
📍使用注意事项
- HelpUploadFiles 分为 32位 与 64位 两个版本,需要根据不同的上传接口选择不同的版本,如目前百度网盘客户端是32位的,则需要使用32位版本的 HelpUploadFiles;而64位系统的Edge浏览器是64位程序,则需要使用64位版本的 HelpUploadFiles。
- 目前版本(v1.0.2)仅支持同时拦截一个进程的文件上传行为,值得注意的是 32位 与 64位版本 加起来一共能同时拦截一个进程。且 添加/移除 忽略列表的操作 仅对当前拦截的进程有效,若切换进程,即使重新注入,也需要重新添加忽略列表(移除后重新添加),否则将无效。 这是由于目前采用的进程通信方案导致的。
- 对于下方输入框手动输入的忽略规则,将采用 C++ 正则表达式规则。
- 对于拖拽上传的文件,将自动进行转义使其符合 C++正则表达式规则。
✨使用步骤(以百度网盘为例,其它应用类似)
-
打开百度网盘。
Open Baidu Cloud.
-
🔑打开 HelpUploadFiles,长按鼠标左键,光标将改变表明程序进入捕获状态,此时将鼠标移动到百度网盘主窗口再松开鼠标左键,下图红框处的提示文字也随之改变为 将要捕获的窗口的标题(若标题为空则为窗口类名)。
-
此时会提示是否注入赋能模块到百度网盘,点击确认,百度网盘将打开一个对话框告知 赋能模块注入成功(这个对话框是由百度网盘所在进程产生的,一个显然的提示是对话框的图标是百度网盘的图标),即表明模块注入成功。如果没有提示赋能模块注入成功,有以下两种可能:
-
赋能模块在之前已经注入,此次注入为重复注入。
-
赋能模块注入失败,这表明功能将不可用。
-
请确保在进行下一步前点击 赋能模块注入成功 消息框的确定键。
-
添加忽略规则(基于C++正则表达式规则)
有两种方式可以添加忽略规则:
- 可通过将文件拖拽到忽略文件列表。(拖拽文件会自动完成转义,以自动适配正则表达式规则)。
- 在下方输入框手动输入正则表达式并点击 “忽略” 按钮添加(回车也可以)。
如果需要移除忽略规则,可先选中忽略列表框中的忽略规则,然后点击按钮 "移除"即可。
如下图,我添加了两条忽略规则用以忽略:
- .idea 文件夹
- node_modules 文件夹
- 上传文件
将需要上传的文件夹拖拽到百度网盘(其它方式也可以)完成上传。匹配忽略规则的文件将不会被上传。
⭐关键步骤分析与经验
上述步骤的 第 2 步是关键步骤,决定了程序能否达到预期效果。
该步骤要考虑两个问题:
- 使用哪个版本的HelpUploadFiles
- 捕获哪个窗口(即鼠标移动到哪个窗口再松开)
🌛分析使用哪个版本的 HelpUploadFiles
- 可通过任务管理器查看要拦截的程序(如百度网盘)是什么版本,然后采用对应版本的 HelpUploadFiles
- 但这也不是绝对的,有些 64位程序 需要使用 32位版本的 HelpUploadFiles,在64位方案不可行时可考虑验证此方案。(如下文的 WinSCP )
🌜使用经验汇总 - Usage Experience Summary
🌈使用 32位(x86)版本
程序 | 捕获窗口 |
---|---|
百度网盘客户端 | 主窗口 或 拖拽上传悬浮窗口均可 |
腾讯微云客户端 | ❗ QQ主窗口(注意此处比较特殊,非腾讯微云窗口) |
天翼网盘 | 主窗口 或 拖拽上传悬浮窗口均可 |
中国移动硬盘 | 主窗口 或 拖拽上传悬浮窗口均可 |
WinSCP | 主窗口 或 拖拽上传悬浮窗口均可 |
360压缩等32位压缩工具 | 压缩菜单弹出窗口 |
Send Anywhere 客户端 | 主窗口 |
🌈使用 64位 (x64)版本
程序 | 捕获窗口 |
---|---|
Chromium 浏览器 | 网页页面 |
Edge 浏览器 | 网页页面 |
奶牛快传网页版 | 网页页面 |
小飞机网盘网页版 | 网页页面 |
阿里网盘网页版 | 网页页面 |
123云盘网页版 | 网页页面 |
联通网盘网页版 | 网页页面 |
谷歌云端硬盘网页版 | 网页页面 |
华为云对象存储服务 OBS 控制台网页 | 网页页面 |
阿里云对象存储服务 OSS 控制台网页 | 网页页面 |
腾讯云对象存储服务 COS 控制台网页 | 网页页面 |
LocalSend | 主窗口 |
7z、Bandizip 等64位压缩工具 | 压缩菜单弹出窗口 |
🍗操作视频演示(以7z压缩软件为例)
🌭C++正则表达式附录 - C++ Regular Expression Appendix
正则表达式是一种用于描述字符串模式的工具,它可以帮助您在文本中进行搜索、匹配、替换等操作。以下是一些常用的正则表达式规则和符号:
- 字符类别:
\d
:匹配任意一个数字字符,相当于[0-9]
。\D
:匹配任意一个非数字字符,相当于[^0-9]
。\w
:匹配任意一个字母、数字或下划线字符,相当于[a-zA-Z0-9_]
。\W
:匹配任意一个非字母、数字或下划线字符,相当于[^a-zA-Z0-9_]
。\s
:匹配任意一个空白字符,包括空格、制表符、换行符等。\S
:匹配任意一个非空白字符。
- 重复次数:
*
:匹配前面的字符零次或多次。+
:匹配前面的字符一次或多次。?
:匹配前面的字符零次或一次。{n}
:匹配前面的字符恰好 n 次。{n,}
:匹配前面的字符至少 n 次。{n,m}
:匹配前面的字符至少 n 次,最多 m 次。
- 边界匹配:
^
:匹配字符串的开头。$
:匹配字符串的结尾。\b
:匹配单词边界。
- 分组和引用:
()
:将其中的字符视为一个整体,可以用于分组操作。\1
,\2
, …:引用分组中的匹配结果。
- 特殊字符转义:
\
:用于转义特殊字符,例如\.
表示匹配点字符.
。
- 其他常用符号:
|
:表示或操作,匹配两者之一。.
:匹配任意一个字符,除了换行符。