trzsz.js 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
trzsz.js 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
trzsz.js 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 JavaScript TypeScript
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 LonnyWong
适用人群 未知
收录时间 2022-03-14

软件简介

 trzsz ( trz / tsz ) 是一个兼容 tmux 的文件传输工具,和 lrzsz ( rz / sz ) 类似,并且有进度条,支持目录传输,支持拖动上传。

GitHub: https://github.com/trzsz/trzsz.js

有关 trzsz 更详细的文档,请查看 https://trzsz.github.io/cn

trzsz.js  trzsz  js 版实现,支持在浏览器中运行的 webshell,支持用 electron 等实现的 js 语言的终端。

开发指引

  • 添加依赖

    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 and chooseSaveDirectory 是必须的。如果是浏览器运行环境,则会忽略它们。注意是 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);
    

开发示例

录屏演示

js 版的 trzsz.js,可以在 Chrome 浏览器中使用 trzsz ( trz / tsz ) 上传和下载文件,如图:

js 版的 trzsz.js,可以集成到 electron 开发的终端中,使用 trzsz ( trz / tsz ) 上传和下载文件,如图:

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(2) 发布并加入讨论🔥
发表了资讯
01/08 10:12

🔥【webshell 文件传输 js 库】trzsz.js 发布 v1.1.5

GitHub 开源地址: https://github.com/trzsz/trzsz.js 在 webshell 中实现文件传输的 js 库 trzsz.js 发布 v1.1.5,优化了进度条,将光标隐藏。 软件简介 trzsz (trz /tsz) 是一个兼容 tmux 的文件传输工具,和 lrzsz ( rz /sz ) 类似,并且有进度条,支持目录传输,支持拖动上传。 有关 trzsz 更详细的文档,请查看 https://trzsz.github.io/cn。 trzsz.js 是 trzsz 的 js 版实现,支持在浏览器中运行的 webshell,支持用 elec...

0
3
发表了资讯
2023/11/05 11:01

【 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 ...

0
13
发表了资讯
2023/10/08 13:35

【 webshell 文件传输工具 trzsz.js 】发布 v1.1.3

【 webshell 文件传输工具 trzsz.js 】发布 v1.1.3,使用异步的 fs API,提高了接入的可扩展性。 开发指引 添加依赖 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 对象( 每个登录服务器的连接创建一个相...

5
4
发表了资讯
2023/07/02 09:24

web 文件传输工具( trzsz.js 组件 )发布 v1.1.1

web 文件传输工具( trzsz.js 组件 )发布 v1.1.1 ,做了一些细节上的优化。 trzsz (trz /tsz) 是一个兼容 tmux 的文件传输工具,和 lrzsz ( rz /sz ) 类似,并且有进度条,支持目录传输,支持拖动上传。 https://github.com/trzsz/trzsz.js 支持在 web 浏览器中使用类似 rz /sz 上传和下载文件,也支持 electron 开发的跨平台应用。 js 版的 trzsz.js,可以在 Chrome 浏览器中使用 trzsz (trz /tsz) 上传和下载文件,如图: js...

0
7
发表了资讯
2023/03/26 16:12

trzsz.js 发布 1.1.0 支持在浏览器中上传和下载目录

trzsz.js ( trz / tsz ) 是类似 rz / sz 的文件传输工具,新版本 1.1.0 支持在浏览器中上传和下载目录。 优点介绍 支持 tmux,包括 tmux 普通模式,以及与 iTerm2 集成的 tmux 命令模式。 支持 传输目录,trz -d 命令上传目录,tsz -d xxx 命令下载 xxx 目录。 支持 Windows,不仅可在 Windows 客户端使用,也可在 Windows ssh 服务器使用。 支持 原生终端,不需要原生终端做支持,只要使用 trzsz ssh x.x.x.x 登录即可。 支持 ...

0
13
发表了资讯
2022/12/14 12:19

trzsz.js 发布 1.0 正式版,支持在浏览器中使用 rz / sz

trzsz.js 发布 1.0 正式版,优化了对 Windows 的支持,优化了速度。 trzsz (trz /tsz) 是一个兼容 tmux 的文件传输工具,和 lrzsz ( rz /sz ) 类似,并且有进度条,支持目录传输,支持拖动上传。 https://github.com/trzsz/trzsz.js 支持在 web 浏览器中使用类似 rz /sz 上传和下载文件,也支持 electron 开发的跨平台应用。 js 版的 trzsz.js,可以在 Chrome 浏览器中使用 trzsz ( trz / tsz ) 上传和下载文件,如图: js 版的...

0
7
发表了资讯
2022/07/19 10:19

trzsz.js 发布 v0.4.3,支持 Windows 11、解决乱码问题

trzsz ( trz / tsz ) 和 lrzsz (rz /sz) 类似,兼容 tmux,有进度条和支持目录传输,还支持拖目录或文件上传。 https://github.com/trzsz/trzsz.js 支持在 web 浏览器中使用类似 rz / sz 上传和下载文件,也支持 electron 开发的跨平台应用。 trzsz.js 发布 v0.4.3 版本: 1、更好地支持 Windows 11 2、解决某些场景下可能出现的中文乱码问题...

0
1
发表了资讯
2022/07/12 10:42

trzsz.js 发布 v0.4.1 ,优化了拖文件上传时的显示问题

https://github.com/trzsz/trzsz.js 发布 v0.4.1 新版本,优化了拖文件上传时的显示问题。 拖文件上传时,会在服务器上执行 trz 命令,正常会隐藏 trz 命令,使得显示效果更好。 如果服务器上设置了一些有颜色的 shell 主题,可能会致显示有点乱,v0.4.1 解决了此问题。 同理,拖目录上传时,会在服务器上执行 trz -d 命令,效果也是一样的。

0
0
发表了资讯
2022/07/10 20:28

trzsz.js 发布 v0.4.0 新版本支持在浏览器拖目录上传到服务器

https://github.com/trzsz/trzsz.js 发布 v0.4.0 新版本: 1、支持 Windows 本地的 cmd、PowerShell 等。 2、支持目录 trz -d 上传和 tsz -d xxx 下载。 3、支持拖文件,甚至拖目录,直接上传到服务器。 在浏览器中使用以下代码,即可实现拖文件和目录上传。 terminalHtmlElement.addEventListener("dragover", (event) => event.preventDefault()); terminalHtmlElement.addEventListener("drop", (event) => { event.p...

0
6
发表了资讯
2022/05/09 13:02

兼容 tmux 的 rz /sz,发布 js 组件新版本 v0.3.4

trzsz (trz /tsz) 是兼容 tmux 的 rz /sz :https://github.com/trzsz/trzsz trzsz.js 是 trzsz (trz /tsz) 的 Node.js 版组件:https://github.com/trzsz/trzsz.js trzsz.js 现已发布 0.3.4 版本,优化了缓冲区大小,会根据网络快慢用不同的缓冲区,兼顾了性能和用户体验。 利用 trzsz.js 可以实现在浏览器中使用 trzsz (trz /tsz) 上传和下载文件,如图: 利用 trzsz.js 可以让 electron 开发的终端,支持在 tmux 中使用 trzs...

0
10
发表了资讯
2022/03/28 00:08

支持 trzsz ( 类似 rz / sz ) 的 js 组件发布 0.3.2 版本

trzsz ( trz / tsz ) 是兼容 tmux 的 rz / sz :https://github.com/trzsz/trzsz trzsz.js 是 trzsz ( trz / tsz ) 的 Node.js 版组件:https://github.com/trzsz/trzsz.js trzsz.js 现已发布 0.3.2 版本,在 tmux 分屏里显示进度条时,影响到其他分屏的问题已解决。 利用 trzsz.js 可以实现在浏览器中使用 trzsz ( trz / tsz ) 上传和下载文件,如图: 利用 trzsz.js 可以让 electron 开发的终端,支持在 tmux 中使用 trzsz ( ...

0
1
发表了资讯
2022/03/20 23:46

兼容 tmux 类似 rz/sz 的 trzsz.js 发布了新版本,并支持 tabby 终端

trzsz.js 发布 v0.3.1 版本,修复了个小 bug,通过插件 tabby-trzsz 支持了 tabby 终端。 在某些场景下,rz / sz 用起来比较方便,唯一不爽的是与 tmux 不兼容,并且没有进度条。 trzsz ( trz / tsz ) 是兼容 tmux 的 rz / sz: https://github.com/trzsz/trzsz trzsz.js 组件使得用 electron 开发的终端很容易就可以支持 trzsz ,现在已支持的终端有: electerm: https://github.com/electerm/electerm tabby: https://github...

0
1
发表了资讯
2022/03/18 14:42

支持 tmux 类似 rz / sz 的 trzsz.js 组件发布 0.3.0 版本

trzsz ( trz / tsz ) 是类似 rz / sz 的文件传输工具,特点是支持 tmux ,有进度条,使用体验更好。 js 版的 trzsz.js 已发布 0.3.0 版本,electerm 1.19.0 以上的版本使用 trzsz.js 组件支持了 trzsz ( trz / tsz ) 工具。 trzsz.js 可以在 Chrome 浏览器中使用 trzsz ( trz / tsz ) 上传和下载文件,如图: trzsz.js 可以集成到 electron 开发的终端中,使用 trzsz ( trz / tsz ) 上传和下载文件,如图:...

1
5
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
2 评论
51 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部