React를 사용하여 IPFS infura.io에 파일을 업로드하는 방법.
5301 단어 blockchainipfsreactweb3
우리가 할 일.
infura 계정 설정.
공식 웹사이트infura.io로 이동하여 계정을 생성하고 서명한 후 계정이 없으면 새 계정을 생성하고 새 키 생성을 클릭합니다.
네트워크 IPFS를 선택하고 원하는 프로젝트 이름을 언급하고 생성하십시오.
여기에서 프로젝트 비밀 키, API 키 비밀 및 IPFS 엔드포인트에 다음 자격 증명이 표시되면 여기에서 원하는 또 다른 사항은 전용 게이트웨이 도메인 링크이므로 전용 게이트웨이 옵션을 활성화하여 얻을 수 있습니다. 원하는 도메인 이름을 입력하고 도메인을 저장합니다.
이제 계정을 설정했으며 이제 전용 게이트웨이가 생겼습니다. 나중에 프로젝트에서 이 모든 자격 증명을 사용할 것입니다.
프로젝트의 IPFS에 파일을 업로드하는 방법.
React 프로젝트에는 ipfs-http-client라는 npm 패키지가 필요합니다. 이 명령을 사용하여 설치하세요.
npm i ipfs-http-client
반응 프로젝트에서 App.js 파일을 열고 우리가 가져오는 ipfs-http-client
create
기능을 ipfsHttpClient
에서 제공하는 ipfs-http-client
로 가져오고 반응 프로젝트에서 infura 자격 증명을 설정합니다.import { create as ipfsHttpClient } from "ipfs-http-client";
App.js 구성 요소에 infura 키를 추가하면 함수base64
를 사용하여 btoa
키를 생성하여 권한 부여 키를 생성하는 데 사용할 것입니다.const projectId = "<YOUR PROJECT ID>";
const projectSecret = "<YOUR PROJECT SECRET>";
const authorization = "Basic " + btoa(projectId + ":" + projectSecret);
참고: 더 안전한 대안을 위해 환경 변수를 자유롭게 사용하십시오.
이제 우리는 변수
ipfs
를 생성할 것입니다. 이것은 create
함수에 의해 반환된 ipfs http 클라이언트를 저장할 것입니다. create
함수 includeurl
및 headers
includeauthorization
에 인수를 전달할 것입니다. const ipfs = create({
url: "https://ipfs.infura.io:5001/api/v0",
headers:{
authorization
}
})
IPFS와 연결을 설정한 후 입력 양식에서 파일을 업로드합니다.
<div className="App">
{ipfs && (
<>
<h3>Upload file to IPFS</h3>
<form onSubmit={onSubmitHandler}>
<input type="file" name="file"/>
<button type="submit">Upload file</button>
</form>
</>
)}
</div>
onSubmitHandler
는 모든 구현을 처리하는 주요 기능으로 코드를 작성할 수 있습니다.const onSubmitHandler = async (event) => {
event.preventDefault();
const form = event.target;
const files = (form[0]).files;
if (!files || files.length === 0) {
return alert("No files selected");
}
const file = files[0];
// upload files
const result = await ipfs.add(file);
setImages([
...images,
{
cid: result.cid,
path: result.path,
},
]);
form.reset();
};
이 함수의 논리는 간단합니다.
ipfs.add(file)
가 파일을 IPFS에 업로드 중입니다add
메서드는 cid
, path
, size
및 mtime
를 포함하는 다음 속성을 반환합니다. 가장 중요한 속성은 cid
입니다(업로드된 파일에 지정된 콘텐츠 식별자 또는 고유한 콘텐츠 식별자입니다. ) 및 path
(파일을 표시하는 데 사용함). 구성 요소의 시작 부분에 이 줄을 추가합니다.
const [images, setImages] = useState([])
IPFS에서 업로드된 파일 표시
onSubmitHandler 함수에 로직이 이미 구현되어 있습니다. 이제 jsx에서 이 로직을 사용할 것입니다.
Infura API 키에서 전용 게이트웨이 도메인 링크를 마지막으로 복사하고 이를
dedicated-gateway-link
로 대체하여 파일을 표시하는 템플릿과 할 일을 추가할 수 있습니다.<div>
{images.map((image, index) => (
<img
alt={`Uploaded #${index + 1}`}
src={"<dedicated-gateway-link>/ipfs/" + image.path}
style={{ maxWidth: "400px", margin: "15px" }}
key={image.cid.toString() + index}
/>
))}
</div>
이제 우리는 이 Github repo에서 전체 코드를 확인할 수 있는 모든 것을 성공적으로 구현했습니다.
결론
infura 프로젝트 업로드 파일을 설정하고 React 애플리케이션에서 액세스하는 방법을 배웠습니다. 그러나 P2P 스토리지 네트워크를 사용하여 파일을 저장하는 분산 솔루션이라는 IPFS의 혁신적인 개념입니다.
Reference
이 문제에 관하여(React를 사용하여 IPFS infura.io에 파일을 업로드하는 방법.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sameer472/how-to-upload-files-on-ipfs-infuraio-using-react-56g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)