【 webshell 文件传输组件】优化了拖拽上传,trzsz.js 发布 v1.1.4
【 webshell 文件传输组件】trzsz.js 支持在浏览器中上传和下载文件,发布 v1.1.4,优化了拖拽上传等功能。
GitHub:https://github.com/trzsz/trzsz.js
录屏演示
js
版的 trzsz.js,可以在 Chrome 浏览器中使用 trzsz (trz /tsz) 上传和下载文件,如图:
js
版的 trzsz.js,可以集成到 electron 开发的终端中,使用 trzsz (trz /tsz) 上传和下载文件,如图:
开发指引
-
添加依赖
npm install trzsz
或者
yarn add trzsz
-
在 Node.js 中引用
import { TrzszFilter } from "trzsz";
或者
const { TrzszFilter } = require("trzsz");
-
或者在浏览器中引用
<script src="node_modules/trzsz/lib/trzsz.js"></script>
-
创建
TrzszFilter
对象( 每个登录服务器的连接创建一个相应的 )const trzszFilter = new TrzszFilter({ // 这里设置 trzsz 的属性,详情请参考下文。 });
-
一般来说,服务器的输出会转发到终端进行显示,创建
TrzszFilter
过滤器,接受服务器的输出,并转发给终端。const trzszFilter = new TrzszFilter({ // 将服务器的输出转发给终端进行显示,当用户在服务器上执行 trz / tsz 命令时,输出则会被接管。 writeToTerminal: (data) => terminal.write(typeof data === "string" ? data : new Uint8Array(data)), }); // 将服务器的输出转发给 TrzszFilter 进行处理,一般会原样转发回上面定义的 writeToTerminal 函数。 webSocket.addEventListener("message", (ev) => trzszFilter.processServerOutput(ev.data));
-
一般来说,用户的输入会转发到服务器上,创建
TrzszFilter
过滤器,接受用户的输入,并转发给服务器。const trzszFilter = new TrzszFilter({ // 将用户的输入转发到服务器上,当 trz / tsz 上传或下载时,输入则会被忽略,ctrl + c 会停止传输。 sendToServer: (data) => webSocket.send(data), }); // 将用户的输入转发给 TrzszFilter 进行处理,一般会原样转发回上面定义的 sendToServer 函数。 terminal.onData((data) => trzszFilter.processTerminalInput(data)); // 将用户的鼠标事件转发给 TrzszFilter 进行处理,一般会原样转发回上面定义的 sendToServer 函数。 terminal.onBinary((data) => trzszFilter.processBinaryInput(data));
-
需要告知
TrzszFilter
终端的宽度,在显示进度条时会使用到。const trzszFilter = new TrzszFilter({ // 终端的初始宽度 terminalColumns: terminal.cols, }); // 当终端宽度发生变化时,告知 TrzszFilter 最新的宽度。 terminal.onResize((size) => trzszFilter.setTerminalColumns(size.cols));
-
如果远程服务器是 Windows 命令行,例如
cmd
和PowerShell
。const trzszFilter = new TrzszFilter({ // 声明远程服务器是 Windows 的 cmd / PowerShell 等 isWindowsShell: true, });
-
如果是
Node.js
运行环境,即能正常执行require('fs')
,那么chooseSendFiles
andchooseSaveDirectory
是必须的。如果是浏览器运行环境,则会忽略它们。注意是async
函数。const trzszFilter = new TrzszFilter({ // 当用户在服务器上执行 trz 命令上传文件时,require('fs') 不报错,则会回调此函数,选择要上传的文件。 chooseSendFiles: async (directory) => { // 如果 `directory` 参数为 `true`,则应该允许用户选择目录和文件( 多选 )。 // 如果 `directory` 参数为 `false`,则应该只允许用户选择文件( 多选 )。 // 返回 `undefined` 代表用户取消选择文件,终止上传操作。 // 正常应该回一个数组,包含文件或目录的绝对路径,如下: return ["/path/to/file1", "/path/to/file2", "/path/to/directory3"]; }, // 当用户在服务器上执行 tsz 命令下载文件时,require('fs') 不报错,则会回调此函数,选择要保存的路径。 chooseSaveDirectory: async () => { // 返回 `undefined` 代表用户取消选择保存路径,终止下载操作。 // 正常应该回一个目录的绝对路径,如下: return "/path/to/directory"; }, });
-
支持拖拽文件和目录上传的功能。
terminalHtmlElement.addEventListener("dragover", (event) => event.preventDefault()); terminalHtmlElement.addEventListener("drop", (event) => { event.preventDefault(); trzszFilter .uploadFiles(event.dataTransfer.items) .then(() => console.log("upload success")) .catch((err) => console.log(err)); });
-
如果你在使用 xterm-addon-attach 插件,只将简单地用
TrzszAddon
替换AttachAddon
即可。import { Terminal } from "xterm"; import { TrzszAddon } from "trzsz"; const terminal = new Terminal(); const trzszAddon = new TrzszAddon(webSocket); terminal.loadAddon(trzszAddon);
开发示例
-
浏览器 webshell 例子。
-
Electron 终端例子。
-
TrzszAddon xterm 插件例子。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Protocol Buffers 25.0 发布
Protocol Buffers 25.0 已经发布。Protocol Buffers(protobuf)是Google 开源的语言无关、平台无关的可扩展机制,用于序列化结构化数据。 具体更新内容包括: Announcements Protobuf News可能包括针对即将发生的更改的附加公告或预先公告。 Compiler 实现 proto2/proto3 的版本 (3813b66) 将 Protobuf 编译器版本字符串定义为宏,并分离出后缀字符串定义。(3c59585) 将 utf8_validation 功能添加回全局功能集中。(153028d) 设置版本更新程序以准备 poison pills 并将版本信息嵌入到 C++、Python 和 Java gencode 中。(4322e00) 合并 protobuf 和 upb Bazel 存储库 (7286ffc) Editions:向 protoc 引入用于生成版本功能集默认值的功能。(4019e25) 为 ExtensionIdentifier 创建 reflection helper。(4d5ab73) Editions:为...
- 下一篇
OpenHarmony 4.0 正式发布
OpenHarmony 4.0 版本现已发布,开发套件同步升级到API 10。相比3.2 Release版本,新增4000多个ArkTS API,应用开发能力更加丰富;HDF新增200多个HDI接口,硬件适配更加便捷;持续优化图形框架和方舟编译器(ArkCompiler),用户交互体验得到进一步提升;ArkUI组件定制化能力和组件动效能力也得到进一步增强;分布式硬件支持的范围扩大到音频和输入领域;分布式数据为开发者数据分享带来了全新的统一数据管理框架。 另外,该版本在媒体、安全和隐私保护等方面也得到了进一步增强。 特性说明 应用框架 Stage模型完善了以下特性: 新增Extension能力最小化管理,支持各类Extension满足业务场景需要。 新增UIExtension机制,用于实现有界面的Extension,UIExtension的界面可以通过UIExtension组件的方式嵌入到调用方应用的窗口上显示。 支持统一的UIExtension模板,定义基础的生命周期和上下文能力。 支持原生默认的Extension界面展示,方便开发者快速实现Extension功能,同时也提供界面定制能...
相关文章
文章评论
共有0条评论来说两句吧...