React를 사용하여 IPFS infura.io에 파일을 업로드하는 방법.

infura가 퍼블릭 게이트웨이의 가치를 떨어뜨린 후 많은 개발자가 IPFS infura에 파일을 업로드하는 동안 문제에 직면합니다.

우리가 할 일.
  • infura 계정
  • 을 생성하고 설정합니다.
  • IPFS
  • 에 파일을 업로드합니다.
  • IPFS에서 콘텐츠에 액세스합니다.

  • infura 계정 설정.



    공식 웹사이트infura.io로 이동하여 계정을 생성하고 서명한 후 계정이 없으면 새 계정을 생성하고 새 키 생성을 클릭합니다.


    네트워크 IPFS를 선택하고 원하는 프로젝트 이름을 언급하고 생성하십시오.



    여기에서 프로젝트 비밀 키, API 키 비밀 및 IPFS 엔드포인트에 다음 자격 증명이 표시되면 여기에서 원하는 또 다른 사항은 전용 게이트웨이 도메인 링크이므로 전용 게이트웨이 옵션을 활성화하여 얻을 수 있습니다. 원하는 도메인 이름을 입력하고 도메인을 저장합니다.



    이제 계정을 설정했으며 이제 전용 게이트웨이가 생겼습니다. 나중에 프로젝트에서 이 모든 자격 증명을 사용할 것입니다.

    프로젝트의 IPFS에 파일을 업로드하는 방법.



    React 프로젝트에는 ipfs-http-client라는 npm 패키지가 필요합니다. 이 명령을 사용하여 설치하세요.
    npm i ipfs-http-client
    반응 프로젝트에서 App.js 파일을 열고 우리가 가져오는 ipfs-http-clientcreate 기능을 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 함수 includeurlheaders 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 , sizemtime를 포함하는 다음 속성을 반환합니다. 가장 중요한 속성은 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의 혁신적인 개념입니다.

    좋은 웹페이지 즐겨찾기