Fleek Storage SDK:让IPFS存储更轻松!

2020-06-05 15:18:53

在某些情况下,与手动与UI交互相比,编程方法更可取。这就是为什么我们创建了Fleek Storage SDK的原因

  Fleek Storage使您可以轻松地将文件上传到IPFS并在现代网站上分发它们。为此,我们制作了一个很棒的Web应用程序,该应用程序允许用户以简单直观的方式存储和访问其文件。

  但是,在某些情况下,与手动与UI交互相比,编程方法更可取。这就是为什么我们创建了Fleek Storage SDK的原因,该API将使您在使用Fleek Storage产品时拥有更大的灵活性。

  这篇文章将帮助您使用Storage SDK的常用命令,因此您可以立即启动并运行。


SDKGuideCover.png


  Fleek Storage SDK Cookbook:最常见的命令

  上面的gif已上传,正在通过Fleek Storage共享。您可以使用Fleek Storage为您的站点提供Web资产!

  以下是Fleek Storage SDK的一些常见命令。它们只是可能命令的一小部分。可以在AWS S3 SDK文档中找到更全面的列表。

  话虽如此,我们将在本文中共享的命令对于常见的用例来说应该足够了:

  上载档案

  获取文件的IPFS哈希

  创建用于网站的资产的共享公共URL


  使用Fleek CLI提取凭据

  Fleek Storage SDK的使用需要api密钥和机密。幸运的是,我们创建了Fleek CLI,可让您轻松获得这些值。

  首先,安装Fleek CLI。

  npm install -g @fleekhq/fleek-cli

  然后,登录到fleek。

  fleek login

  浏览器窗口将打开,并显示登录提示。如果您已经登录,该窗口将自动关闭。

  成功登录后,您将可以使用以下命令获取密钥和机密:

  fleek whoami

  将这些值复制到安全的地方!


  安装AWS开发工具包

  将aws-sdk必须安装NPM包与Fleek存储交互。

  npm install --save aws-sdk


  设置S3客户端

  现在,我们将使用我们的凭据设置一个S3客户端。该客户端将用于所有其他AWS S3命令。

  const AWS = require('aws-sdk');

  const s3 = new AWS.S3({

  apiVersion: '2006-03-01',

  accessKeyId: '[[apiKey]]',

  secretAccessKey: '[[apiSecret]]',

  endpoint: 'https://storageapi.fleek.co',

  region: 'us-east-1',

  s3ForcePathStyle: true

  });

  将字段apiKey和替换为上一部分中apiSecret获取的凭据fleek whoami。


  存储

  存储桶包含您的所有文件,并且在获取或上传文件时必须指定该存储桶。每个Fleek帐户默认都带有一个存储桶。

  s3.listBuckets(function (err, data) {

  if (err) {

  console.log("Error when listing buckets", err);

  } else {

  console.log("Success when listing buckets", data);

  }

  });

  确保将存储桶的名称保存在其他命令使用的位置。


  列出存储桶中的文件

  您可以列出存储桶中的文件。这对于获取文件密钥列表和生成公共URL特别有用。

  const params = {

  Bucket: "my-bucket",

  MaxKeys: 20

  };

  s3.listObjectsV2(params, function (err, data) {

  if (err) {

  console.log("Error when listing objects", err);

  } else {

  console.log("Success when listing objects", data);

  }

  });

  下面提供了典型响应的示例。

  { IsTruncated: false,

  Contents:

  [ { Key: 'homer-cooking.gif',

  LastModified: 2020-05-21T19:07:54.956Z,

  ETag: '"-1"',

  Size: 2078126,

  StorageClass: 'STANDARD',

  Owner: [Object] } ],

  Name: 'samuelea-team-bucket',

  Prefix: '',

  Delimiter: '',

  MaxKeys: 20,

  CommonPrefixes: [],

  KeyCount: 1 }

  Fleek Storage中的每个文件都可以通过Name包含该文件的存储桶的ID 和文件的unique 进行标识Key。


  获取文件的URL

  Fleek提供了可用于您的网站的公共URL。例如,如果您上载图像或图标,则可以使用URL在网站中显示它们。

  可以在Web应用程序中轻松找到此公共URL,但您也可以使用存储桶的Name和文件的生成该URL Key。

  const url = `https://${bucket}.storage.fleek.co/${key}`

  例如,这是上面显示的gif的URL:

  https://samuelea-team-bucket.storage.fleek.co/homer-cooking.gif

  samuelea-team-bucket是水桶。 homer-cooking.gif是文件的密钥。


  上载档案

  可以通过Web UI上传文件。或者,可以根据用例通过编程方式上传它们。

  方法如下:

  const params = {

  Bucket: 'my-team-bucket',

  Key: 'myFolder/myPicture',

  ContentType: 'image/png',

  Body: myPictureFile,

  ACL: 'public-read',

  };

  const request = s3.putObject(params);

  request.send();

  如果要在Fleek网络应用程序中查看上面的文件,则会myPicture在名为的文件夹下找到该文件myFolder。您可以将文件放在文件夹中,以提供用斜杠分隔的路径来更好地组织资产。


  获取IPFS哈希

  Fleek Storage上的所有文件都上传到IPFS,这意味着它们使用唯一的IPFS哈希进行标识。当使用putObject命令上传文件时,Fleek将通过http标头公开IPFS哈希。

  const request = s3.putObject(params);

  request.on('httpHeaders', (statusCode, headers) => {

  const ipfsHash = headers['x-fleek-ipfs-hash'];

  // Do stuff with ifps hash....

  const ipfsHashV0 = headers['x-fleek-ipfs-hash-v0'];

  // Do stuff with the short v0 ipfs hash... (appropriate for storing on blockchains)

  }).send();

  我们建议从x-fleek-ipfs-hash标头中获取散列,该散列将返回base32 v1 IPFS散列。

  对于必须将IPFS哈希存储在以太坊等区块链上的用例,Fleek还通过公开了较短的v0 IPFS哈希x-fleek-ipfs-hash-v0。

  单击还可从Web应用程序获取哈希Verify on IPFS。

  例如,这是用作示例的gif的哈希值:bafybeieosa4izdyojswkzddssuekz47ly7suwb4spiniv33e5ht5kbz5vu。

  可以通过IPFS网关进行访问:

https://gateway.temporal.cloud/ipfs/bafybeieosa4izdyojswkzddssuekz47ly7suwb4spiniv33e5ht5kb5vu


最新推荐