标签: ipfs

如何为 IPFS 托管的文件创建下载链接?

我最近一直在玩IPFS,并且一直想知道如何为文件创建一个下载链接,给它们一个自定义名称。标准<a>标签下载属性不起作用:

<a href="http://ipfs.io/ipfs/QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps" download="ipfs-p2p-file-system.pdf">foo</a>
Run Code Online (Sandbox Code Playgroud)

有没有办法通过使用 JavaScript 或 Jquery 来解决这个问题?最后,我可以通过服务器路由文件,但我不想这样做。

javascript jquery ipfs

5
推荐指数
1
解决办法
1137
查看次数

如何检索 ipfs 对象的哈希值?

在我使用 ipfs 添加文件后ipfs add hello- 如果我丢失了文件,如何检索文件的哈希值?

我想我在期待ipfs info <filepath>或类似的东西?

ipfs

5
推荐指数
2
解决办法
4907
查看次数

如何使用 IPFS 存储应用程序状态(作为 dApp 的后端)?

我刚开始使用 IPFS 和以太坊。我们正在构建一个 dApp(移动)并计划用 IPFS 和以太坊替换标准的 API 和数据库层。所以,经过大量阅读后,我有以下问题,

  1. 使 dApp 直接与 IPFS(通过 IPFS API)对话以存储数据(应用程序数据或文件)并获取数据。即,用 IPFS 完全替换 API 层似乎是可能的,但是这种方法有什么问题吗?我们可以完全没有 API 吗?

  2. 如果第 1 点是可能的,访问文件数据是直接的,但如何访问应用程序。IPFS 中的数据(例如:推荐的存储和检索结构是什么,如何存储不同的用户数据等)?

  3. 我知道添加到 IPFS 的数据是公开可用的,我们如何保护该数据并使其仅对特定客户可用?据我了解,IPFS 中没有公钥/私钥机制?

  4. 当我们将视频存储在 IPFS 中时,要在客户端流式传输视频,我们是否需要使用 CDN,我不确定如何在分散的解决方案中做到这一点。

  5. 当某些事件被触发或由客户端应用程序命令时,IPFS 中是否有任何选项可以自动执行任务(例如:运行脚本)?

  6. 从节点查找和获取数据时,IPFS 是否存在任何已知的性能问题?

  7. 关于可用于实现上述方法的工具和框架的任何建议?

提前致谢。

ethereum ipfs decentralized-applications

5
推荐指数
1
解决办法
524
查看次数

如何仅使用纯 javascript 使用 js-ipfs 创建目录并将文件添加到 ipfs

我在研究中能找到的唯一答案是从 PC 上的目录上传多个文件。这不是我想要做的。我正在尝试在 ipfs 中创建一个目录,然后仅使用纯 JavaScript 的 js-ipfs 将新文件添加到该目录中,通常一次一个文件。

我从概念上理解 ipfs 中的目录只是另一个文件。但我不明白如何创建该目录(文件)并将其他文件添加到其中以供以后检索,尤其是使用 js-ipfs 和纯 javascript 代码。

我隐式地不使用 node.js,因此也不使用 react、angular 或 vue。

这适用于 ipfs 上没有目录的单个文件:

<!DOCTYPE html>
<html>
<head>
  <script src="https://cdn.jsdelivr.net/npm/ipfs/dist/index.min.js"></script>
</head>
<script>
    document.addEventListener('DOMContentLoaded', async () => {
        const nodeId = 'ipfs-' + Math.random()
        const node = await Ipfs.create({ repo: nodeId })
        console.log("Your node: " + nodeId)
        window.node = node
        const status = node.isOnline() ? 'online' : 'offline'
        console.log(`Node status: ${status}`)
        async function addFile () {
            for await (const { cid …
Run Code Online (Sandbox Code Playgroud)

javascript ipfs js-ipfs

5
推荐指数
1
解决办法
1351
查看次数

IPFS-如何将消息从一个点发送到另一个点?

我正在寻找一种解决方案,将消息从 IPFS 对等点发送到另一个

github 文档中,我发现这段代码将一个对等点连接到另一个点:

ipfs.swarm.connect(addr, function (err) {
  if (err) {
    throw err
  }
  // if no err is present, connection is now open
})
Run Code Online (Sandbox Code Playgroud)

但根据文档,连接后没有任何反应。

有一个名为ipfs-pubsub-room 的解决方案可以处理对等点之间的消息传递,但没有适用于浏览器的 CDN。

node.js ipfs libp2p

4
推荐指数
1
解决办法
2963
查看次数

使用 ipfs (js-ipfs-http-client) 将完整目录上传到 IPFS

我想使用 (js-ipfs-http-client) 模块将目录上传到浏览器上的 ipfs。

我发现了这个老问题。 https://github.com/ipfs/js-ipfs/issues/277 所以我决定使用递归方式添加文件并只获取一个哈希值。

ipfs.addFromFs('path', { recursive: true, ignore: ['subfolder/to/ignore/**'] }, (err, result) => {
            if (err) { throw err }
            console.log(result)
        })
Run Code Online (Sandbox Code Playgroud)

但它给了我这个错误。fs Add 在浏览器上不起作用

我需要使用 javascript 将一个目录上传到 ipfs,但我找到的所有资源只上传一个文件。或者很多带有哈希值数组的文件。我需要一种方法来上传目录中的所有文件并仅使用一个哈希值来获取文件。提前致谢。

javascript node.js ipfs

4
推荐指数
2
解决办法
6247
查看次数

IPFS uri 格式:https://ipfs.io/ipfs/&lt;CID&gt; 与 ipfs://&lt;CID&gt;?

这是我的测试 tokenURI.json 文件,其中包含我传递给令牌contract.setTokenURI()的 imageURI:

{
 "attributes": [
    {
      "trait_type": "location",
      "value": "West Awesomeville"
    },
    {
      "display_type": "date",
      "trait_type": "created",
      "value": 1535250800
    }
  ],
  "description": "My awesome NFT.",
  "image": "https://ipfs.io/ipfs/QmaUXii41ESnUMxLJUoVcrEeXowz7RHcdTiumvrBmUvcwG?filename=test4.png",
  "name": "NFT 1"
}
Run Code Online (Sandbox Code Playgroud)

这是使用 esp 的最佳 IPFS uri 形式。如果我想将这个 NFT 加载到 Opensea 中?

IPFS 中的文档建议:

https://ipfs.io/ipfs/<CID>
Run Code Online (Sandbox Code Playgroud)

但 Opensea 的文档建议:

ipfs://<CID>
Run Code Online (Sandbox Code Playgroud)

哪种形式更好,为什么?

在上面的 json 中,我使用 IPFS 推荐的第一种形式。它可以工作,但是加载到 Opensea 中很慢/有点不可预测。

Opensea 推荐的表格更短,没有网关。如果我使用第二种形式,Opensea 中的图像加载速度会更快吗?

IPFS 文档:在 Web 上解决 IPFS

Opensea 文档:
如果您使用 IPFS 托管元数据,您的 URL 应采用 ipfs://CID 格式。例如,ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb。

uri ipfs opensea tokenuri imageuri

4
推荐指数
1
解决办法
970
查看次数

ipfs.add 和 ipfs.dag.put 之间有什么区别?

使用该js-ipfs库,我正在努力寻找有关以下命令之间差异的良好信息:

> await ipfs.add('hello world',{cidVersion:1})
{
  path: 'bafkreifzjut3te2nhyekklss27nh3k72ysco7y32koao5eei66wof36n5e',
  cid: CID(bafkreifzjut3te2nhyekklss27nh3k72ysco7y32koao5eei66wof36n5e),
  size: 11,
  mode: undefined,
  mtime: undefined
}
> await ipfs.dag.put('hello world')
CID(bafyreifg3qptriirganaf6ggmbdhclgzz7gncundvtsyrovyzqigm25jfe)
Run Code Online (Sandbox Code Playgroud)

我的期望:CID 是一样的。

将不胜感激任何指点。

ipfs js-ipfs

4
推荐指数
1
解决办法
738
查看次数

如何缩小IPFS的存储大小限制?

我正在使用 IPFS 并试图理解它的结构。

问题:1 我面临的问题是,当我尝试缩小 IPFS 的存储大小时(测试需要很长时间,因此我只想缩小文件系统一段时间)但无法缩小。

我尝试使用此命令通过更改StorageMax限制来配置配置文件

ipfs 配置数据存储.StorageMax 1GB

但它仍然不起作用,它也接受(ipfs add)1GB之后的文件,为什么他不限制文件存储?

有人请建议我如何减小文件系统大小?

问题:2 即使在 IPFS 的默认存储限制(即 10 GB)的情况下,我看到当我在 IPFS 上添加文件时,它在超过 10GB(这是限制)后也不会停止存储文件。限制结束后就不能跨越了,这怎么办?

下面是配置文件

{
  "API": {
    "HTTPHeaders": {}
  },
  "Addresses": {
    "API": "/ip4/0.0.0.0/tcp/5001",
    "Announce": [],
    "Gateway": "/ip4/0.0.0.0/tcp/8080",
    "NoAnnounce": [],
    "Swarm": [
      "/ip4/0.0.0.0/tcp/4001",
      "/ip6/::/tcp/4001"
    ]
  },
  "Bootstrap": [
    "/dnsaddr/bootstrap.libp2p.io/ipfs/QmNnooDu7bfjPFoTZYxMWUQJyrVwtbZg5gBMjTezGAJN",
    "/dnsaddr/bootstrap.libp2p.io/ipfs/QmQCU2EcMqAqQPR2i9bChGNJchTbq5TbXJJ16u19uLTa",
    "/dnsaddr/bootstrap.libp2p.io/ipfs/QmbLHAnMoJPWSCR5Zhtx6BX9KiKNN6tpvbUcqanj75Nb",
    "/dnsaddr/bootstrap.libp2p.io/ipfs/QmcZf59bWwK5XFi76CZX8cbBhTzzA3gU1ZjYZcYW3dwt",
    "/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEQAwe3N8SzbUtfsmvsqQLuvuJ",
    "/ip4/104.236.179.241/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2MULpjvfd3aZ6ha4oFGL1KrGM",
    "/ip4/128.199.219.111/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXDQVcqN88CNLHXMkTNwMKPnu",
    "/ip4/104.236.76.40/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZCy3U6aXMJDAbzgu2fzaDs64",
    "/ip4/178.62.158.247/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPakiS1J6DifTC88f5uVQKNAd",
    "/ip6/2604:a880:1:20::203:d001/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M7Lpjvfd3aZ6ha4oFGL1KrGM",
    "/ip6/2400:6180:0:d0::151:6001/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctVcqN88CNLHXMkTNwMKPnu",
    "/ip6/2604:a880:800:10::4a:5001/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64",
    "/ip6/2a03:b0c0:0:1010::23:1001/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd"
  ],
  "Datastore": {
    "BloomFilterSize": 0,
    "GCPeriod": "1h",
    "HashOnRead": false,
    "Spec": {
      "mounts": [
        {
          "child": {
            "path": …
Run Code Online (Sandbox Code Playgroud)

filesystems nfs ipfs

3
推荐指数
1
解决办法
2510
查看次数

获取上传到 IPFS 的文件夹内单个文件的 HASH

当我将文件文件夹上传.jpg到 IPFS 时,我会得到该文件夹​​的哈希值 - 这很酷。

但是该文件夹中的每个单独文件也会被散列吗?如果是这样,我如何获取每个文件的哈希值?

我基本上希望能够上传一大堆文件 - 比如 500 个图像 - 并一次性或以编程方式完成所有操作,并将每个文件的哈希值返回给我。

有办法做到这一点吗?

hash blockchain ethereum ipfs

3
推荐指数
1
解决办法
1975
查看次数