如何使用IPFS命令行/js代码上传文件

IPFS网关是什么

IPFS 网关的基础地址是指公共 IPFS 网关的根 URL,该 URL 用于通过 HTTP 访问 IPFS 存储的内容。公共 IPFS 网关是由社区提供的服务,任何人都可以通过这些网关访问 IPFS 上存储的内容。

常见的公共 IPFS 网关包括:

  • https://ipfs.io/ipfs/
  • https://gateway.pinata.cloud/ipfs/
  • https://dweb.link/ipfs/

这些网关允许用户通过浏览器或其他 HTTP 客户端直接访问 IPFS 上的文件。使用这些网关的基本形式是将文件的 IPFS 哈希添加到网关的根 URL 后,形成完整的文件地址。例如,如果文件的 IPFS 哈希是 QmXvgoHk4HHDsWPj3bXZvBmn4Q4xhGo2uJrpYJ6q2EkRJL,那么通过 https://ipfs.io/ipfs/ 可以访问到该文件的地址为 https://ipfs.io/ipfs/QmXvgoHk4HHDsWPj3bXZvBmn4Q4xhGo2uJrpYJ6q2EkRJL

使用IPFS命令行上传文件

IPFS(InterPlanetary File System)提供了命令行工具,允许用户在终端中执行各种 IPFS 操作。以下是一些常用的 IPFS 命令以及它们的简要说明:

  1. 安装IPFS 命令行工具
# 下载安装包
wget https://dist.ipfs.tech/kubo/v0.22.0/kubo_v0.22.0_linux-amd64.tar.gz

# 解压文件
tar -xvzf kubo_v0.22.0_linux-amd64.tar.gz

# 进入解压后的文件夹
cd kubo

# 运行安装脚本
sudo bash install.sh
  1. 初始化 IPFS:

    ipfs init
    

    该命令用于初始化本地 IPFS 存储库。它将在你的主目录下创建 .ipfs 目录,并生成配置文件。

  2. 启动 IPFS 节点:

    ipfs daemon
    #低功耗运行指令
    ipfs init --profile=lowpower 
    

    该命令用于启动 IPFS 节点。一旦节点启动,你可以通过浏览器或其他 IPFS 客户端访问 IPFS 网络。

  3. 添加文件到 IPFS:

    ipfs add filename.txt
    

    该命令用于将文件添加到 IPFS。它将返回一个唯一的哈希值,表示刚刚添加的文件。

  4. 通过哈希获取文件:

    ipfs cat QmXvgoHk4HHDsWPj3bXZvBmn4Q4xhGo2uJrpYJ6q2EkRJL
    

    该命令用于通过文件的哈希值从 IPFS 获取文件内容。

  5. 查看 IPFS 节点信息:

    ipfs id
    

    该命令用于查看当前 IPFS 节点的信息,包括节点 ID 和网络连接。

  6. 在浏览器中查看 IPFS 文件:
    如果你使用默认的 IPFS 网关(https://ipfs.io/),你可以在浏览器中访问文件:

    https://ipfs.io/ipfs/QmXvgoHk4HHDsWPj3bXZvBmn4Q4xhGo2uJrpYJ6q2EkRJL
    

这只是 IPFS 命令行工具的一小部分功能。你可以使用 ipfs --help 命令来查看所有可用命令和选项的列表。此外,IPFS 还提供了一组强大的 HTTP API,可以通过编程方式与 IPFS 进行交互。

注意:在使用 IPFS 之前,请确保你已经安装了 IPFS 命令行工具。你可以从 IPFS 官方网站(https://ipfs.io/)下载并按照安装说明进行安装。

使用js代码上传文件到IPFS

IPFS 框架的编程接口: 如果你使用编程语言如 JavaScript,你可以使用 IPFS 框架(例如 js-ipfs)提供的 API 来上传文件。以下是一个简单的示例:

const IPFS = require('ipfs-core');

async function uploadFile() {
  const ipfs = await IPFS.create();
  const file = { path: 'yourfile.txt', content: Buffer.from('Hello IPFS') };
  const results = await ipfs.add(file);
  console.log('File uploaded. IPFS hash:', results.cid.toString());
}

uploadFile();

这将输出上传文件的 IPFS 哈希。

记住,IPFS 是一个去中心化的系统,上传的文件会在网络中分布,因此其他人也可以通过相同的 IPFS 哈希访问到你上传的文件。如果你希望确保文件的长期可用性,你可能需要考虑使用 IPFS Pinning 服务,将文件保留在网络中。

IPFS配置

第一段代码设置编辑器为vim
第二段代码打开ipfs配置文件

export EDITOR=/usr/bin/vim
ipfs config edit

附录

IPFS常见问题1:

使用本地节点上传文件后,IPFS链接无法在浏览器打开,出现504 gateway timeout
原因是地址需要使用网关解析,而网关目前还没有解析到当前文件的地址,所以无法查询到文件;

解决方法:

方法1:修改网关IP

默认情况下,网关为/ip4/127.0.0.1/tcp/8082,只能在本地访问。要将其公开给网络中的其他计算机,要使用0.0.0.0作为IP地址。

即将本地ip
在这里插入图片描述
修改为
在这里插入图片描述
实测重启服务后,大约半小时可以从公共网关ipfs.io打开本地上传的文件
https://www.cnblogs.com/HandyLi/p/11864515.html

方法2:使用本地网关,举例

文件地址为

https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR

修改为

http://127.0.0.1:8080/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR

从而在本地ipfs节点打开文件,提高速度。

方法3:使用ipfs-companion,这是一个浏览器插件,在检测到文件链接可用时,会自动把地址从远程网关换成本地网关访问文件。

此问题的参考链接:https://stackoverflow.com/questions/74158980/why-is-it-so-hard-for-web-browsers-to-open-ipfs-links/75063740#75063740

ipfs-companion:
https://www.5axxw.com/wiki/content/1il7zw

你可能感兴趣的:(javascript,开发语言,ecmascript)