1

我一直在玩js-ipfs API,想问是否有人知道 js-ipfs 只支持上传文件/文件夹?有没有办法上传,例如一个javascript对象,如:

{
    heading:"SomeHeading",
    content:"somecontent"
}

或类似的字符串

"{heading:\"SomeHeading\", content:\"somecontent\"}"

到目前为止,我已经尝试过:

const ipfs = window.IpfsApi('localhost', 5001, {protocol: 'https'});
const buffer = ipfs.Buffer;

async function uploadToIpfs() {
    let someObject = {
        heading:"SomeHeading",
        content:"someContent"
    };

    let objectString = JSON.stringify(someObject);

    let bufferedString = await buffer.from(objectString);

    await ipfs.add(bufferedString, (err, resp) => {
        console.log(err);
        console.log(resp);
    });
}

但我明白了 在此处输入图像描述

任何解决此问题的帮助或直接回答是否可以仅上传 js 对象或字符串将不胜感激!

4

2 回答 2

1

我尝试了您的代码,您需要做的就是更改为protocolhttp因为您在本地主机上。

{protocol: 'http'}
于 2018-07-16T18:39:45.480 回答
0

如果我正确理解您的问题,您想上传任意对象内容;因此,您需要一个抽象 blob 存储。这可以使用ipfs-blob-store来完成。

确保阅读文档,但要明白:

var ipfsBlobStore = require('ipfs-blob-store')

var options = {
  port: 5001,   // default value
  host: '127.0.0.1', // default value
  baseDir: '/', // default value
  flush: true  // default value
}    
var store = ipfsBlobStore(options)

var ws = store.createWriteStream({
  key: 'some/path/file.txt'
})

ws.write("{heading:\"SomeHeading\", content:\"somecontent\"}")
ws.end(function() {
  var rs = store.createReadStream({
    key: 'some/path/file.txt'
  })

  rs.pipe(process.stdout)
})
于 2018-07-15T04:28:51.390 回答