codecamp

Moralis IPFS

保存文件

使用 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 上传的文件。


Moralis 文件
Moralis Units
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Moralis 文件

Moralis 工具

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }