ipfs文件上传问题

Posted

技术标签:

【中文标题】ipfs文件上传问题【英文标题】:Ipfs file uploading issue 【发布时间】:2020-09-07 08:39:14 【问题描述】:

我正在使用 IPFS 服务进行文件存储。从 Node.js 应用程序中,我可以初始化 IPFS_Node 并使用此节点上传文件。

var ipfs = ipfsClient(
            // the hostname (or ip address) of the endpoint providing the ipfs api
            host: '*****************',
            // the port to connect on
            port: '443',
            // 'api-path': '/api/v0/',
            // the protocol, https for security
            protocol: 'https',
            // provide the jwt within an authorization header
            headers: 
                authorization:
                    'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ**********************'
            
        );
    for await (const response of ipfs.add(file.buffer)) 
            console.log(response);
            res.json( response: response, status: 200 );
        

Ipfs 添加抛出错误响应

HTTPError: Unauthorized

   at Object.errorHandler [as handleError] (C:\Users\Rohail\Documents\GitHub\Artbot_api\node_modules\ipfs-http-client\src\lib\core.js:67:15)        
   at processTicksAndRejections (internal/process/task_queues.js:93:5)
   at Client.fetch (C:\Users\Rohail\Documents\GitHub\Artbot_api\node_modules\ipfs-utils\src\http.js:145:9)
   at Object.add (C:\Users\Rohail\Documents\GitHub\Artbot_api\node_modules\ipfs-http-client\src\add.js:13:17) 
 name: 'HTTPError',
 response: Response 
   size: 0,
   timeout: 0,
   [Symbol(Body internals)]:  body: [PassThrough], disturbed: true, error: null ,
   [Symbol(Response internals)]: 
     url: 'https://api.ipfs.temporal.cloud/api/v0/add?stream-channels=true&progress=false',
     status: 401,
     statusText: 'Unauthorized',
     headers: [Headers],
     counter: 0
   
 

【问题讨论】:

【参考方案1】:

我发现了一个错误,问题是 ipfs-http-client 版本 (^44.0.1)。 当我将其更新到最新版本 (^44.1.1) 时,错误已解决。

改变这个: "ipfs-http-client": "^44.0.1"

收件人: "ipfs-http-client": "^44.1.1",

【讨论】:

【参考方案2】:

不确定这是否有帮助,但如果您使用的是最新版本的ipfs-http-client,那么ipfs.add 现在会返回AsyncIterable<Object> 而不是Promise

尝试类似:

const all = require('it-all')
const data = await all(ipfs.add(file))
console.log(data)

欲了解更多信息,请参阅:https://blog.ipfs.io/2020-02-01-async-await-refactor/

【讨论】:

它应该在浏览器和nodejs中都可以使用。如果您发现了错误,请在github.com/ipfs/js-ipfs/issues/new/choose报告详细信息

以上是关于ipfs文件上传问题的主要内容,如果未能解决你的问题,请参考以下文章

上传到ipfs上的两个文件,为啥一个可以通过网址+hash访问,另一个却访问不了?

IPFS文件未下载

IPFS 生成的链接无法解析

什么是IPFS?IPFS挖矿6个月回本?

运用IPFS网络的Space分布式存储,究竟有多酷?

盘古开源浅谈:我们为什么需要IPFS分布式存储?