我们有一个Windows文件共享和JPEG文件,我正尝试通过Java Spring Boot REST API从Pivotal Cloud Foundry访问该文件。 PCF和Java本身都需要采取哪些步骤来实现这一目标?

我是否必须先将驱动器安装在PCF中,然后才能以某种方式使用标准的java.io库来访问该文件?到目前为止,我们只是想将JPEG文件读取到BufferedImage中,并在进行一些图形操作(我知道该怎么做)后将它们返回为Base64,但是我一直坚持不懈地努力解决这个问题。 PCF领域。显然,它在我的Windows开发计算机上可以正常工作,在该计算机上,我的登录用户也具有文件共享的凭据,无需挂载它或执行任何特殊操作。

我一直在线阅读有关SMB和JCIFS库的信息,但仍然不确定这是我所需要的还是如何充分利用手头的技术来应用它。

最佳答案

从Pivotal Cloud Foundry 2.4开始,您可以启用SMB卷服务。这使您可以cf create-service指向您的SMB服务器的卷服务。然后,您可以将其绑定到您的应用程序,并且当您的应用程序启动时,平台会将SMB卷挂载到您指定的挂载点。到那时,您的应用程序只需要知道安装点,例如/smb/files,因此它可以使用标准Java I / O来读取文件。

如果您是平台运营商,请在此处启用SMB卷服务的说明。

https://docs.pivotal.io/pivotalcf/2-4/opsguide/enable-vol-services.html#smb-enable

如果您是开发人员,请参见此处的使用说明。

https://docs.pivotal.io/pivotalcf/2-4/devguide/services/using-vol-services.html#smb



如果您使用的是PCF的较旧版本,或者您的操作员尚未启用此功能,则需要在应用程序中编写一些代码才能直接访问SMB卷。有多个库可以执行此操作(并且此列表中可能有更多库)。


https://www.jcifs.org/
https://github.com/hierynomus/smbj
https://github.com/AgNO3/jcifs-ng


我不推荐特定的产品,因此您需要评估并确定哪种产品适合您。

请记住,无论您选择什么,都需要从PCF上运行的应用程序对SMB服务器进行网络访问。这意味着IP必须是可路由的,并且不能被防火墙阻止。如果无法连接,则可能还需要与平台运营商一起查看网络访问权限,并确保没有任何阻塞(防火墙,应用程序安全组等)的连接。

希望有帮助!

10-06 11:29