Moralis IPFS

2022-05-12 14:38 更新

保存文件

使用 Moralis 时,IPFS 支持开箱即用。

您可以使用 ​saveIPFS()​ 方法上传文件(最大文件大小为 1 GB)。

// Save file input to IPFS
const data = fileInput.files[0];
const file = new Moralis.File(data.name, data);
await file.saveIPFS();

//console.log(file.ipfs(), file.hash())

// Save file reference to Moralis
const jobApplication = new Moralis.Object("Applications");
jobApplication.set("name", "Satoshi");
jobApplication.set("resume", file);
await jobApplication.save();

// Retrieve file
const query = new Moralis.Query("Applications");
query.equalTo("name", "Satoshi");
query.find().then(function ([application]) {
  const ipfs = application.get("resume").ipfs();
  const hash = application.get("resume").hash();
  console.log("IPFS url", ipfs);
  console.log("IPFS hash", hash);
});

数据会自动固定。

保存对象

您还可以直接从 JavaScript 上传 JSON 对象,通过保存 base64 字符串,Moralis 将自动从提供的 base64 创建缓冲区:

const object = {
  key: "value",
};
const file = new Moralis.File("file.json", {
  base64: btoa(JSON.stringify(object)),
});
await file.saveIPFS();

通过上传 base64,您还可以上传其他 base64 编码的文件,例如图片(你可以使用​JS​、​React​来实现)。

const image = "data:image/png;base64,iVBORw0KGgoAAA....";
const file = new Moralis.File("image.png", { base64: image });
await file.saveIPFS();
const { saveFile } = useMoralisFile();

const uploadFile = () => {
  const base64 = "V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=";
  saveFile(
    "myfile.txt",
    { base64 },
    {
      type: "base64",
      saveIPFS: true,
      onSuccess: (result) => console.log(result.ipfs()),
      onError: (error) => console.log(error),
    }
  );
};

通过公用网关获取文件

可以通过对公共网关的 GET 请求来检索 IPFS 文件。 Moralis 网关的 URL 是:

例如,https://gateway.moralisipfs.com/ipfs/QmUfpsyqc4hwozotRo4woyi5fJqvfcej5GcFvKiWoY6xr6。 从浏览器获取 IPFS 中的 JSON 文档的函数可以编写如下:

async function fetchIPFSDoc(ipfsHash) {
  const url = `https://gateway.moralisipfs.com/ipfs/${ipfsHash}`;
  const response = await fetch(url);
  return await response.json();
}

公共网关用例

Moralis 公共 IPFS 网关用于:

  • 在通过 Moralis 上传的网站上显示内容

Moralis 公共 IPFS 网关不适用于:

  • 运行从 IPFS 下载内容的脚本。 Moralis 公共网关有一个用于防止滥用的 JS Challenge 阻止脚本。 如果您的用例要求您运行脚本下载大量 IPFS 数据,我们推荐 Infura 或 Pinata。
  • 访问 IPFS 上未通过 Moralis 上传的文件。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号