Swarm上传和下载文件

上传和下载文件

当我们把文件上传到Swarm,这些文件会被分解成大小为4kb的数据块,然后分布存储到网络中负责存储和分发节点。每个数据块上粘贴了一个特定面值的邮票(单位为gBZZ),邮票金额会随着数据的存储不断消耗,这些都是在我们购买邮票组的时候已经设定了。对于网络中的存储节点来说,邮票面值的大小代表了数据的重要程度和存储持续性,也就是数据要保持DISC(分布式不可更改存储数据块)。

Overview

按照下边的步骤上传数据到Swarm:

  1. 给Bee节点钱包充值
  2. 使用gBZZ购买邮票包
  3. 等待票据包分发到网络
  4. 上传内容,需要绑定邮票包ID,BEE节点会在对应的数据块上粘贴邮票
  5. 使用hash下载内容

购买邮票包

要上传数据到Swarm,必须消耗一定量的gBZZ,以此来告诉网络中的存储和分发节点你的数据是重要的。所以,在开始接下来的步骤前,你必须先购买一些邮票。参考购买邮票包

上传

Bee节点运行起来以后,会打开对应的HTTP API,你可以通过这些API来控制Bee。使用curl命令行可以方便的调用这些api。

首先,确保API正常运行。

curl http://localhost:1633
Ethereum Swarm Bee

Bee API正常运行后,通过POST请求直接上传文件。这里你必须在头部指定batch id

curl -H "Swarm-Postage-Batch-Id: 78a26be9b42317fe6f0cbea3e47cbd0cf34f533db4e9c91cf92be40eb2968264" -F file=@bee.jpg http://localhost:1633/bzz

我们也可以通过Content-Type来设置MIME类型,通过name来参数设置文件名。

curl --data-binary @bee.jpg  -H "Swarm-Postage-Batch-Id: 78a26be9b42317fe6f0cbea3e47cbd0cf34f533db4e9c91cf92be40eb2968264" -H "Content-Type: video/jpg" "http://localhost:1633/bzz?name=bee.jpg"

注意:上传到Swarm的数据默认是公开的。对于敏感文件,必须在上传之前对文件内容进行加密来保证数据的隐私性。

上传成功以后,结果会已json形式返回,其中包含swarm引用ID(hash),也就是上传文件的swarm地址,例如

{"reference":"042d4fe94b946e2cb51196a8c136b8cc335156525bf1ad7e86356c2402291dd4"}

妥善保存这个地址,接下来我们需要使用这个地址获取文件。

在Swarm中,每个数据文件会有一个唯一的地址。如果同一个文件上传两次,会得到相同的hash值。这也确保了Swarm中数据的安全性和真实性。

如果想在上传过程中获取上传状态,参考获取上传状态。一旦文件完全同步到网络,网络中的其它节点会负责存储和分发数据。

下载

文件上传到Swarm以后,可以通过HTTP GET直接下载。

命令行下载

curl -OJ http://localhost:1633/bzz/042d4fe94b946e2cb51196a8c136b8cc335156525bf1ad7e86356c2402291dd4

你也可以直接在浏览器中输入连接来下载文件。

http://localhost:1633/bzz/042d4fe…2291dd4

公共网关

要分享文件给没有运行Bee节点的人,你只要简单替换链接中的主机地址为Swarm公共网关。这样他们也能够下载这个文件了。

https://gateway.ethswarm.org/bzz/042d4fe…2291dd4

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值