在js中使用IPFS
ipfs 有官方的npm包,我们可以引用它加入到现有工程。
npm install --save ipfs-api
在上传逻辑文件中如下配置:
const ipfsAPI = require('ipfs-api');
const ipfs = ipfsAPI({host: 'localhost', port: '5001', protocol: 'http'});
// 向ipfs中上传数据
ipfs.add(fs.readFileSync(path), function (err, files) {
if (err || !files) {
console.log(err);
} else {
console.log(files);
}
})
// 从ipfs中获取数据
ipfs.get(hash,function (err,files) {
if (err || !files) {
console.log(err);
} else {
console.log(files);
}
})
当然更方便的办法是用promise进行封装:
exports.add = (buffer) =>{
return new Promise((resolve,reject)=>{
try {
ipfs.add(buffer, function (err, files) {
if (err || !files) {
reject(err);
} else {
resolve(files[0].hash);
}
})
}catch(ex) {
reject(ex);
}
})
}
exports.get = (hash) =>{
return new Promise((resolve,reject)=>{
try{
ipfs.get(hash,function (err,files) {
if (err || typeof !files) {
reject(err);
}else{
resolve(files[0].content);
}
})
}catch (ex){
reject(ex);
}
});
}