有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

web应用程序的java功能,用于处理用户从SFTP服务器下载文件的请求

在我们的Java web应用程序中,客户希望将一些大文件上传到SFTP服务器,然后直接从那里下载。客户不希望使用任何第三方工具,而是希望在应用程序本身中使用此功能

文件上传部分由JFileUpload小程序组件&;图书馆。一旦文件上传,我就可以找出存储文件的确切位置。上传的文件将作为一个链接显示给用户,用户可以点击下载(比如HTTP或FTP文件链接)

所以我必须决定从SFTP服务器下载文件的策略

一个选项是解析请求,然后连接SFTP服务器,并通过HTTP服务器传输文件。但在这里,该文件将通过HTTP而不是SFTP下载,而且它也不会用于使用SFTP的目的

我能想到的另一个选择是通过小程序,同样像上传。一旦对SFTP文件的请求到达HTTP服务器,它将启动一个包含小程序的页面,该小程序有一个目录浏览器,供用户决定保存路径。一旦用户选择保存位置,文件将自动开始从SFTP服务器下载到该位置。这样,连接将完全是SFTP

我想知道第二种方法的可行性,以及是否有什么重要的事情需要我去处理。哪些SFTP库最适合用于此类操作

此外,请让我知道是否有其他更好的选择做上述活动

编辑

这篇文章看起来像是一个关于如何从SFTP服务器下载的建议请求(可能来自标题,但我想不出任何其他标题!!)。感谢您对API的建议,但对我们来说,更重要的问题是找出一种方法,用户从SFTP服务器下载文件的请求是通过安全SSH而不是HTTP完成的。现在,使用上面提到的API,我们可以很好地将文件从SFTP服务器下载到HTTP服务器的文件系统,但在那之后,如果我们必须将同一文件重定向到用户的机器,我们必须使用HTTP,这是我们想要避免的

我们的第二个想法是,使用带有小程序的页面,在用户的客户端和SFTP服务器之间启动SFTP会话,以解决上述问题

执行起来有多困难?我们在这方面的做法应该是什么? 如果还有其他更好的&;更简单的方法做同样的任务,那么请建议


共 (4) 个答案

  1. # 1 楼答案

    客户总是对的,所以当需求对我来说是糟糕的架构时,我会对此表示同情,并尝试帮助你解决这个问题

    applet方法还可以,但对于web应用来说似乎有点笨重。还有javascript sftp库This one支持sftp,与仅仅为了提供文件传输而弹出小程序相比,它会给web应用程序带来更自然的感觉。它不是免费的,但也不是那么贵。它仍然在引擎盖下使用小程序来实现文件传输,只是没有向用户显示java屏幕

  2. # 2 楼答案

    我建议使用Java安全通道JSch。它是SSH2的纯Java实现。除了几乎所有其他SSH2选项(XForwarding、port forwarding等)之外,它还提供了执行SFTP的好例子。我们在很多项目中都使用了它,而且没有任何问题。我甚至将它的GSS-API(Kerberos)支持绑定到一个本机Kerberos实现中,效果很好。它是BSD授权的,所以无论是否商业化,您在授权方面不应该有太多问题

    我认为使用JSch构建小程序非常简单。最大的问题是确保小程序已签名,并且有权写入/读取本地文件,并连接到有问题的SSH服务器

  3. # 4 楼答案

    我喜欢这种事。它抽象出实际的文件系统类型,并允许您使用标准接口,而不管底层实现如何。它反过来又依赖于实际系统的其他库,尤其是用于SFTP的JScsh