View

목록


  1. IPFS-#1.IPFS 사용법(CLI,Ubuntu)
  2. IPFS-#2.IPFS 사용법(nodejs,Ubuntu)

 

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
Share Link
reply
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31