Wormhole网站

传输文件我一般用 Wormhole ,这是一个免费的文件传输/分享网站,无需注册就能直接使用,最厉害的是它单次最大支持10GB文件的传输!
dcfc0a7d7361933d3d0c201bb0374abe.jpeg
并且该网站还支持端到端加密以及时效性的链接方式,最大限度保证了你的文件传输安全。接下来,咱就来通过该网站传输文件!
拖拽或勾选需要传输的文件之后,伴随着炫酷的过场动画文件就进入待传输状态。
57563be9c57ead110f0821caab1d12a0.jpeg
在分享文件之前,我们可以设置文件的下载条件,我们可以选择1~24小时后删除或是在下载1~100次以后删除,有种阅后即焚的感觉!
待分享的文件有三种分享方式可供选择,分别是:转发分享、二维码分享、链接分享。

我个人喜欢以二维码的形式分享出去,毕竟扫码更加的快捷和方便嘛~
分享完之后,我们可以在该网站看到分享的记录以及文件的下载情况。
85066d60e21562a7b3e7a9d558f23c7f.jpeg
当然也可以随时中断文件的分享,即使没有到设置的失效时间和下载次数也能中断!

下载 https://wormhole.app/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是完整的代码流程: ```javascript const Ftp = require('ftp'); const fs = require('fs'); const path = require('path'); const sendToWormhole = require('stream-wormhole'); const awaitWriteStream = require('await-stream-ready').write; const Controller = require('egg').Controller; class FileController extends Controller { async download() { const { ctx } = this; const client = new Ftp(); const filePath = ctx.query.filePath; // 文件在ftp服务器上的路径 const fileName = path.basename(filePath); // 文件名 const writeStream = fs.createWriteStream(fileName); // 创建本地文件写入流 // 连接ftp服务器 client.connect({ host: 'ftp.example.com', user: 'username', password: 'password', }); client.on('ready', () => { client.get(filePath, (err, stream) => { if (err) { client.end(); ctx.status = 500; ctx.body = 'Failed to get file'; return; } // 使用stream-wormhole处理异常 stream.once('error', error => { sendToWormhole(stream); client.end(); ctx.status = 500; ctx.body = 'Failed to get file'; }); // 将文件流pipe到本地写入流 stream.pipe(writeStream); // 完成本地写入后,返回文件给前端 writeStream.on('finish', async () => { const fileStream = fs.createReadStream(fileName); // 使用await-stream-ready等待流完成 await awaitWriteStream(fileStream); // 设置响应头,告诉浏览器返回的是文件流 ctx.set('Content-disposition', `attachment; filename=${fileName}`); ctx.set('Content-Type', 'application/octet-stream'); ctx.body = fileStream; // 关闭ftp连接 client.end(); }); }); }); client.on('error', error => { ctx.status = 500; ctx.body = 'Failed to connect ftp server'; }); } } module.exports = FileController; ``` 在上面的代码中,我们首先连接ftp服务器,然后使用ftp库获取文件流。由于获取的流是一个Socket对象,我们无法直接将其赋值给ctx.body返回给前端,因此需要将其pipe到本地文件写入流中,等待写入完成后再将其返回给前端。在写入完成后,我们需要手动设置响应头告诉浏览器返回的是文件流,并关闭ftp连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值