全部产品

大文件数据存证

更新时间:2019-06-06 17:28:59

在基础数据类型的基础上,蚂蚁区块链数据存证功能支持大文件存证。大文件存证主要适用于您有文件内容直接需要存证,或文本存证的长度过大(如超过100k)时的场景。您可以在 配置数据格式 时增加上传文件的字段,数据类型选择“File”即可。

使用文件存证,在数据构造上需要比常规数据类型更多的步骤。在SDK工具包中提供了文件存证需要的工具类,使用这个工具类需要以下几个步骤:

  1. 获取OSS配置。在配置了带有File类型的数据格式后,您可以在下载sdk时看到OSS配置的内容,请将之复制到您本地的application.properties文件中。查看大文件配置大文件配置展示
  2. 您需要在本地初始化文件存证服务的工具类,建议在项目启动时进行一次初始化即可。之后存证数据构造时会自动为您将文件存证,并将地址和摘要存入交易内容中。

    示例代码如下:

    1. // 载入配置属性
    2. Properties p = new Properties();
    3. p.load(new FileInputStream("/path_to_file/application.properties"));
    4. String endpoint = p.getProperty("oss.config.endpoint");
    5. String accessKeyId = p.getProperty("oss.config.accessKeyId");
    6. String accessKeySecret = p.getProperty("oss.config.accessKeySecret");
    7. String bucket = p.getProperty("oss.config.bucket");
    8. String folder = p.getProperty("oss.config.folder");
    9. // 初始化OssUtil工具类
    10. OssUtil.init(endpoint, accessKeyId, accessKeySecret, bucket, folder);
  3. File类型的字段,构造时使用ChainFile来传递参数。假设我们定义了如下样式的数据格式:

    1. // schema.txt定义:商家顾客信息
    2. GuestInfo {
    3. String userName; // 姓名,要求非空,长度在20以内
    4. String birthday; // 生日,要求非空
    5. String email; // 邮件地址,要求非空,符合电子邮件格式
    6. File picture; // 个人图片
    7. }

    我们依然使用GuestInfoBuilder来构造数据,构造方法如下:

    1. // 构造ChainFile对象,构造函数参数为文件名、文件输入流
    2. ChainFile pic = new ChainFile("pic", new FileInputStream("/path_to_file/pic.img"));
    3. // 构造存证数据
    4. GuestInfoBuilder builder = new GuestInfoBuilder();
    5. byte[] bizData = builder.buildUserName("Bob")
    6. .buildBirthday("2000-01-01")
    7. .buildEmail("bob@inc.com")
    8. .buildPicture(pic)
    9. .build();

    读取存证数据时,可以通过getContent()方法获取ChainFile文件内容,getFileName()方法获取ChainFile文件名。