Scikit Web

Solana Infura.io IPFS NodeJS File Upload Example - 솔라나 NFT 인프라 IPFS 파일업로드 예제 본문

NFT/Solana(솔라나)

Solana Infura.io IPFS NodeJS File Upload Example - 솔라나 NFT 인프라 IPFS 파일업로드 예제

Keun0 2022. 6. 22. 21:05
728x90
반응형

IPFS InterPlanetary 파일 시스템은 분산 파일 시스템에서 데이터를 저장하고 공유하기위한 프로토콜 및 피어 투 피어 네트워크입니다.

위키피디아 정의

 

Infura.io 는 IPFS 를 무료로 5GB까지 사용 가능 하며, 파일 업로드를 하면 해당 파일로 접근 가능한 URI를 생성해 준다. 

 

nodejs 예제가 https 로 되어 있는데.. 해당 라이브러리는 지원 종료 예정 이며.. 파일 정보를 붙여서 전송을 해볼려다가.. 도저히 못해서

https://www.npmjs.com/package/node-libcurl 라이브러리로 사용하였다.

 

node-libcurl

The fastest http(s) client (and much more) for Node.js - Node.js bindings for libcurl. Latest version: 2.3.4, last published: 5 months ago. Start using node-libcurl in your project by running `npm i node-libcurl`. There are 141 other projects in the npm re

www.npmjs.com

 

https://docs.infura.io/infura/networks/ipfs/how-to/make-requests

 

Make requests - Infura Docs

response1 = requests.post(endpoint + '/api/v0/add', files=files, auth=(projectId, projectSecret)) response2 = requests.post(endpoint + '/api/v0/cat', params=params, auth=(projectId, projectSecret)) response3 = requests.post(endpoint + '/api/v0/pin/rm', par

docs.infura.io

 

const { Curl } = require('node-libcurl');

async function main() {
(async () => {

const projectId = '1qmt...XXX';
const projectSecret = 'c920...XXX';
const auth =
    'Basic ' + Buffer.from(projectId + ':' + projectSecret).toString('base64');



const curl = new Curl();
const close = curl.close.bind(curl);
curl.setOpt(Curl.option.URL, "https://ipfs.infura.io:5001/api/v0/add");
curl.setOpt(Curl.option.HTTPPOST, [{ name: "0.png", file: "0.png" }]);
const headers = ["Authorization: " + auth];
curl.setOpt(Curl.option.HTTPHEADER, headers);
curl.on("end", (statusCode: any, body: any, headers: any) => {
	console.log("body  ", body);
});
curl.on("error", (error: any) => {
	console.log("error ", error);
});
curl.perform();


})();
}

main().catch((error) => {
	console.error(error);
	process.exitCode = 1;
});
728x90
반응형
Comments