![ccc619560d2c8c9afdcf4d2a4a2dcdd6.png](https://img-blog.csdnimg.cn/img_convert/ccc619560d2c8c9afdcf4d2a4a2dcdd6.png)
Fleek Storage使您可以轻松地将文件上传到IPFS并在现代网站上分发它们。为此,我们制作了一个很棒的Web应用程序,该应用程序允许用户以简单直观的方式存储和访问其文件。
但是,在某些情况下,与手动与UI交互相比,编程方法更可取。这就是为什么我们创建了Fleek Storage SDK的原因,该API将使您在使用Fleek Storage产品时拥有更大的灵活性。
这篇文章将帮助您使用Storage SDK的常用命令,因此您可以立即启动并运行。
![cb864ea6d823175f0c9c0513c7616f72.png](https://img-blog.csdnimg.cn/img_convert/cb864ea6d823175f0c9c0513c7616f72.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}. http:// 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。