【CSDN开源夏令营】 基于Web的SSH客户端,实现跨平台的云服务管理(七)关于文件上传下载实现的设想
一.介绍
关于web端的SSH客户端初定的核心功能都做完了,工作上基本就算结束了。但是我觉得还可以为它增加文件上传下载功能。
二.实现需要解决的问题
1.我使用的底层没有对sftp的支持。
2.由于跳板机的存在,如何保证文件上传下载的安全性。
三.问题初步的解决方式
1.我在gitthub和stackoverflow上找到了sftp的nodejs实现,原来已经有sftp的nodejs开源了。https://github.com/mscdex/ssh2(找了好久)
2.跳板机不缓存文件,通过sftp协议拉取文件字节流到内存,文件用字节流的方式通过跳板机传输给终端。
四.总结
目前思路是有了,用https协议也可以保证文件的安全性,但是他的缺点是对服务器内存开销太大,而且对文件上传与下载的大小有限制。
目前我还没有找到一个好的办法来解决这个问题。
由于sftp的实现是nodejs(在服务器上)而不是用户前台的js,这就意味着文件上传下载必须通过服务器,因为用户前台不能支持sftp协议,并且服务器没有权利私自储存用户私有文件。这就意味着如果实现文件上传下载,服务器将有大量的内存将开销在文件字节流缓存上。
目前我还没有找到一个合适的方式在来合理的实现这个功能。(不是实现不了,是开销太大)
最合理的办法是用户前台可以用js实现sftp的模拟。这样文件流就不用走服务器了。不过目前还没有人实现或开源。
要是有人有好的方法实现,请告诉我下~