nft.storage是一项全新的服务,专为存储链下NFT 数据而构建。将数据分散存储在IPFS和Filecoin 上,并使用可在智能合约中使用的内容寻址 IPFS URI 进行引用,而不必担心引用的数据会发生变化。
以下是对他的一些常用功能和实现方式的简单总结:
创建账户
首先,想要使用它,当然需要一个身份认证 -- 创建账户。
- 创建账户 nft.storage/login/
- 创建并备份 token nft.storage/manage/ 这个token将会在一下很多地方使用
查看
接下来,在介绍如何将东西放到nftStorage之前,我想先介绍一下如何查看我们放上去的东西。
- 代码查看(前端)
import axios from 'axios'
axios
.get(`https://api.nft.storage`, {
headers: { Authorization: "Bearer <TOKEN>", platform: "web" },
})
.then((data) => {
console.log(JSON.parse(data.request.response));
});
注: 这里的 TOKEN 就是我们创建账户后生成的token了。
其他的增删改文档有详细的api和所有错误回应情况 nft.storage/api-docs/
- 网站查看 nft.storage/files/
只要你曾经登陆注册过,访问这个网站就可以看到并操作我们曾经上传的文件。如果登入超时通过邮箱亦可在此登入
上传
官方文档的上传方式琳琅满目,然而,首要考虑的当然是它的访问和使用是否方便,因为上传生成的 hash 值和路径不能直接访问,是需要拼接的。
- 直接上传文件
- 上传语法(并获取 metadata)
import { File } from 'nft.storage'
const metadata = await client.store({
name: '<NAME>',
description: '<DESCRIPE_FILE>',
image: new File([<DATA>], '<FILE_NAME>', { type: 'image/jpg' })
})
console.log(metadata)
hash 值:metadata.ipnft
- 访问方式(适用 🌟🌟🌟)
https://.ipfs.dweb.link/<FILE_NAME> - 弊端
上传内容限制字符串,提供地址需拼接两个变量
- 上传文件夹
- 上传语法(并直接获取 hash)
import { File } from 'nft.storage'
const hash = await client.storeDirectory([
new File([<DATA>], '<FILE_NAME>'),
new File([JSON.stringify(<DATA>)], '<FILE_NAME>')
])
hash 值:hash
-
访问方式(适用 🌟🌟🌟) https://.ipfs.dweb.link/<FILE_NAME>
-
弊端 上传内容限制字符串 拼接两个变量
-
优点 已有上传文件过多时不需要循环跑上传文件
- 上传 buffer 文件
- 上传语法(并直接获取 hash) const hash = await client.storeBlob(<BLOB || BUFFER>)
- 访问方式(适用 🌟🌟🌟🌟🌟) https://.ipfs.dweb.link/
在实际的业务需求中,我觉得这是最便捷的方法。