首页 > 编程语言 >tus-node-server 官方基于node 实现的tus server 1.0 发布

tus-node-server 官方基于node 实现的tus server 1.0 发布

时间:2023-09-19 11:13:07浏览次数:48  
标签:node console tus upload server const

tus-node-server 是基于typescript 开发的新的nodejs server,通过拆分为独立的包(file,s3,gcs, server )

包含的特性

  • 完全基于typescript 开发
  • 拆分为了独立的包
  • 提供了新的events 以及hooks
  • 升级了依赖包
  • 重新设计了存储
  • file 存储添加了过去扩展
  • 更好的周边集成(express,fastify。。。)

参考使用

  • s3
version: '3'
services:
  minio:
    image: minio/minio:RELEASE.2023-09-16T01-01-47Z
    ports:
      - "9000:9000"
      - "19001:19001"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
    command: server --console-address :19001 --quiet /data
  • app.js
const port = 1080
const datastore = new S3Store({
  partSize: 8 * 1024 * 1024, // 8MB
  s3ClientConfig: {
    bucket: process.env.AWS_BUCKET,
    region: process.env.AWS_REGION,
    endpoint: process.env.AWS_ENDPOINT,
    tls: process.env.AWS_TLS === 'true',
    credentials: {
        accessKeyId: process.env.AWS_ACCESS_KEY_ID,
        secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
    },
    forcePathStyle: true,
  },
})
const server = new Server({
  path: '/files',
  datastore,
})
 
// New events system
server.on(EVENTS.POST_CREATE, (req, res, upload) => {
    console.log('POST_CREATE',upload)
 
})
server.on(EVENTS.POST_RECEIVE, (req, res, upload) => {
    console.log('POST_RECEIVE',upload)
})
server.on(EVENTS.POST_FINISH, (req, res, upload) => {
    console.log('POST_FINISH',upload)
})
server.on(EVENTS.POST_TERMINATE, (req, res, id) => {
    console.log('POST_TERMINATE',id)
})
server.listen({ host, port })
  • client.js
const { Server, EVENTS } = require('@tus/server')
const { S3Store } = require('@tus/s3-store')
require('dotenv').config()
const host = '0.0.0.0'
const fs = require('fs')
const tus = require('tus-js-client')
 
const path = `${__dirname}/my.mp4`
const file = fs.createReadStream(path)
 
const options = {
  endpoint: 'http://localhost:1080/files/',
  metadata: {
    filename: 'my.mp4',
    filetype: 'video/mp4',
  },
  one rror(error) {
    console.error('An error occurred:')
    console.error(error)
    process.exitCode = 1
  },
  onProgress(bytesUploaded, bytesTotal) {
    const percentage = ((bytesUploaded / bytesTotal) * 100).toFixed(2)
    console.log(bytesUploaded, bytesTotal, `${percentage}%`)
  },
  onSuccess() {
    console.log('Upload finished:', upload.url)
  },
}
 
const upload = new tus.Upload(file, options)
upload.start()
  • 效果

 

说明

目前来说tus-node-server 做为一个支持断点续传的解决方案还是很不错的,一个参考集成
对于客户端可以使用提供的周边工具,我们可以基于tus 的node server 或者golang 也是可以的,进行自己的定制调整
可以实现大文件的断点续传能力,node server 提供的扩展能力还是很不错的

参考资料

https://github.com/tus/tus-node-server
https://tus.io/blog/2023/09/04/tus-node-server-v100
https://github.com/tus/tus-js-client/blob/main/docs/api.md
https://github.com/tus/tus-node-server/tree/main/packages/server#servergetreq-res
https://github.com/tus/tus-node-server/issues/483

标签:node,console,tus,upload,server,const
From: https://www.cnblogs.com/rongfengliang/p/17714098.html

相关文章

  • 将图片插入到SQL Server数据库
    --新建表imagecreatetableimage(img_idint,imgimage) 拖控件TADOQuery包含Jpeg.hpp//存入图片://image以二进制形式存放图片ADOQuery1->Close();ADOQuery1->SQL->Clear();ADOQuery1->SQL->Add("insertintoimagevalues(:img_id,:img)");ADOQuery1->Paramet......
  • 更改SQL Server sa密码、默认端口 以及ADO连接字符串指定端口号
    1、更改sa密码execsp_passwordnull,'000','sa'--将sa密码改为0002、更改SQLSERVER默认端口     (1)SqlServer服务使用两个端口:TCP-1433、UDP-1434。其中1433用于供SqlServer对外提供服务,1434用于向请求者返回SqlServer使用了那个TCP/IP端口。可以使用SQLServer的企业管......
  • npm does not support Node.js的解决办法
    原文链接:https://blog.csdn.net/UKilll/article/details/131589827 1、查看npm和nodejs的版本是否配套。2、因为我的使用了npminstall-gnpm把npm的版本升级到了9.几导致运行项目的时候提示npmv9.8.0doesnotsupportNode.jsv14.16.1,查阅了很多资料之后感觉太麻烦了,现......
  • 多用户、多会话 Server版操作系统下 程序唯一实例运行
    很多时候我们需要做这样的事:只允许当前程序只有唯一一个实例运行。这样的情况包括串口程序、网络socket等。这时我们有多种解决方法。常见的像用互斥、信号量等比运行实例生存期更长的内核对象,或者使用内存映射(点击打开链接)等。如使用互斥内核对象:HANDLEhm......
  • SQL Server备份/还原 SQL注入
    SQL还原目标数据库 注:不能在目标数据库会话中执行alterdatabasetestsetsingle_userwithrollbackimmediate--(这里也可以延迟几秒回滚你的操作)restoredatabasetestfromdisk='d:\test.bak'alterdatabasetestsetmulti_user无意中看到的,有意思的SQL注入:--完整备份......
  • SQL设置SQLServer最大连接数
    设置最大连接数下面的T-SQL语句可以配置SQLServer允许的并发用户连接的最大数目。execsp_configure'showadvancedoptions',1execsp_configure'userconnections',100第一句用以表示显示sp_configure系统存储过程高级选项,使用userconnections时,要求......
  • How to use ESM & TypeScript in Node.js All In One
    HowtouseESM&TypeScriptinNode.jsAllInOne{"compilerOptions":{"module":"NodeNext",//"module":"Node16",}}{"name":"esm-ts-package",......
  • 【漏洞复现】JumpServer未授权访问漏洞(CVE-2023-42442)
    1、简介JumpServer是一款符合4A规范的开源堡垒机,帮助企业以更安全的方式管控和登录各种类型的资产,实现事前授权、事中监察、事后审计,满足等保合规要求。2、漏洞描述JumpServer在3.0.0-3.6.3版本存在未授权访问漏洞。由于系统权限配置存在不合理,导致未授权攻击者可以直接访问......
  • Node.js URL 模块:解析和操作 URL
    任何基于Web的应用程序不可或缺的方面之一是其有效使用URL的能力。无论是解析传入的URL还是构建URL来发出请求,清楚地了解Node.js中的URL模块对于现代Web开发人员来说至关重要。在这篇博文中,我们将探索Node.js的URL模块,从基本的URL解析开始,逐步推进到更复杂的......
  • KingbaseES V8R6集群备份恢复案例之---备份初始化“can not find primary node”故障
    案例说明:KingbaseESV8R6集群,备库作为repo-path节点,建立类型为‘cluster’模式的备份,在执行sys_backup.shinit时,出现“cannotfindprimarynode”故障。故障如下图所示:适用版本:KingbaseESV8R6一、集群及备份配置1、集群节点状态[kingbase@node101bin]$./repmgrclus......