Hyperledger Composer:访问本地系统上的文件

时间:2018-06-19 06:27:31

标签: javascript file-upload hyperledger hyperledger-composer

我想从本地系统访问文件,以便我可以将它们上传到云端并将链接存储在区块链中。有没有办法通过Hyperledger Composer中的.js脚本文件访问文件?

2 个答案:

答案 0 :(得分:1)

从技术上讲,这是一个Node问题(用于文件上传),并且在语义上是一个建模问题。首先,这是(从Composer的角度来看)从“客户端”执行的任务,编码解决方案“属于”此处。如果您的意思是(即与Hyperledger Composer业务网络交互)如何在业务网络中访问和存储数据(String) - 下面的答案将提供更多详细信息。其他人可能会回答“云”存储方面的问题。您始终可以在区块链上存储文件的链接(以及文件的哈希并将其作为URL /链接的一部分提供),因此它可以引用云存储文件。

如果使用Javascript存储内容是您的目标,您可以使用readFileSync并转换为字符串,例如。代码中的fs.readFileSync(‘yourFile)。toString('base64'); - you should be able to convert the image to a Base64`字符串。您可以为所选的建模资产类型等定义“字符串” - 即在已部署的Hyperledger Composer业务网络中托管它的字符串字段。理论上说,一旦它是一个字符串,它就可以在商业网络上更新(作为交易,也就是智能合约/“链码”的一部分),就像任何其他领域一样。

这些链接在这方面也可能有所帮助:

Can readFileSync from node.js fs library load an array from a text file?

图像文件,PDF: - > https://www.thepolyglotdeveloper.com/2016/02/convert-an-uploaded-image-to-a-base64-string-in-node-js/

与上述类似的另一种类型: - > https://belltane.wordpress.com/2017/03/27/storing-images-in-hyperledger-fabric-blockchain/

答案 1 :(得分:0)

在事务逻辑脚本中,您不能使用requireimport

事务逻辑在Fabric上的链码(docker)容器中运行,因此文件系统将是(docker)链码的文件系统,而不是文件存储在客户端的位置。

因此,您最终将编写一个Client应用程序(具有对文件系统的访问权限),然后通过Composer JavaScript API或REST API调用Transaction。