View
목록
IPFS 사용법
IPFS를 javascript로 nodejs에서 실행해본다.
ipfs-api 모듈 설치
sudo npm install -save ipfs-api
ipfs 연결
const ipfsAPI = require('ipfs-api');
const ipfs = ipfsAPI('192.168.0.8' ,'5001', {protocol: 'http'})
ipfs.add()
ipfs.add()는 파일을 ipfs에 보내기위한 함수이다.
먼저 ipfs_upload_testfile.txt 라는 파일에 "hello world"내용을 적는다.
echo "hello world" > ipfs_upload_testfile.txt
다음은 전체 코드이다.
const ipfsAPI = require('ipfs-api');
//read file
const fs = require('fs');
//ipfs importing
const ipfs = ipfsAPI('192.168.0.8' ,'5001', {protocol: 'http'})
//read file
let testFile = fs.readFileSync('ipfs_upload_testfile.txt', 'utf8')
//input buffer
let testBuffer = Buffer.from(testFile); //new Buffer -> Buffer.from
//upload file to ipfs
ipfs.files.add(testBuffer, (err,file)=>{
if(err) {
console.log(err);
}
console.log(file)
})
실행결과
ipfs.get()
ipfs.get()은 ipfs에 존재하는 파일을 hash값을 이용해 가져오는 함수이다.
전체코드는 다음과 같다.
const ipfsAPI = require('ipfs-api'); const fs = require('fs');
//ipfs importing
const ipfs = ipfsAPI('192.168.0.8' ,'5001', {protocol: 'http'})
//testfile cid path
const testFilePath = 'QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o';
let downloadFile;
ipfs.files.get(testFilePath, (err,files)=>{
files.forEach((file) =>{
console.log(file.path);
console.log(file.content.toString('utf8'))
downloadFile = file.content.toString('utf8')
//download file save
fs.writeFileSync('ipfs_download_testfile.txt', downloadFile, 'utf8', (err)=>{
if(err) {
console.log(err);
}
console.log('write end');
})
})
})
실행결과
저장한 ipfs_download_testfile.txt 출력결과
마무리
원래는 ipfs-http-client api를 이용하려했는데 for await에서 자꾸 막힌다.. node version을 업그레이드 시켜주었는데고 계속그런다.. 몇시간의 사투 끝에 그냥 ipfs-api를 이용했다.
Reference
https://medium.com/coinmonks/ipfs-tutorial-sending-and-getting-files-via-nodejs-backend-85c85ae7f6f6
https://kindload-save.tistory.com/3
https://github.com/ipfs-inactive/interface-js-ipfs-core/blob/master/SPEC/FILES.md#add
'Research Note > BlockChain' 카테고리의 다른 글
IPFS 사용 법 (CLI,Ubuntu) (0) | 2020.12.16 |
---|
reply