lesson-7_画面から任意の画像をIPFSにアップロードできるようにしよう
🦄 画面から任意の画像を IPFS にアップロードできるようにしよう (credit: mashharuki)
このレッスンでは、任意の画像データをIPFSにアップロードする画面を開発します。
🖼 IPFSについては、ETH-NFT-Maker の Section2-Lesson1で解説しているのでそちらをご覧ください!
IPFSへのファイルアップロードについては、デスクトップアプリをダウンロードして、手動でも行うことができるのですが、もし画面からボタンを押すだけでアップロードすることができたら使いやすくて便利ですよね! このレッスンではそのための画面を作成していきます!
今回は、IPFSにアクセスするためのAPIを提供しているPinataを利用します! もしアカウントを作成していない場合は、Pinataにアクセスしてアカウントを作成してください!
アカウントを作成したらいよいよ開発に移ります!
まずは、開発に必要なモジュールを追加でインストールしましょう!
※コマンドはfrontend
配下で実行してください!
yarn add --dev axios form-data
axios とは
axiosとは、HTTP通信(データの更新・取得)を簡単に行うことができる、JavaScriptのライブラリです。公開されているAPIの機能を利用してデータを送受信する際に良く使用されるライブラリとなります。
form-data とは
API等を利用してデータを送信したい場合に、ファイルデータなどの情報を格納したオブジェクトを用意する必要がありますがその際によく利用されるJavaScriptライブラリとなります。今回は画像データを送信する際に使用します。
では、Uoload画面用のコンポーネントファイルを追加していきましょう! まずは、下記のディレクトリ構造に従ってファイルを追加してください!
frontend/
├─ __mocks__/
├─ assets/
│ ├─ css/
│ ├─ img/
│ └─ js/
│ ├─ components/
+ │ │ ├─ UploadButton.js
│ ├─ near/
│ └─ pages/
+ │ ├─ Upload.js
├─ App.js
├─ index.html
└─ index.js
🔑API クレデンシャル情報を取得しよう
さて、コンポーネントを作成していきたいのですがもう一点事前に準備が必要なことがあります!
今回はPinataのAPIを利用するのですが、その際認証情報が必要となります! その情報を取得してdev-account.env
ファイルに登録する必要があるのでまずはこの認証情報を取得しましょう!
流れは至ってシンプルです!
1. Pinataのサイトにログインする。
2. APIクレデンシャル情報を作成する。
3. クレデンシャル情報をコピー&ペーストする
1. Pinata のサイトにログインする。
事前にアカウントを作成してhttps://www.pinata.cloud/にアクセスしましょう!
2. API クレデンシャル情報を作成する。
次にAPI用のクレデンシャル情報を作成しましょう! ログイン後のページの右上のメニューボタンから「API Keys」を選択してクリックします!
次に表示される画面でAPIのクレデンシャル情報を作成できます。 左上の「+ New Key」ボタンをクリックしましょう!
うまくいけば下のような画面が表示されるはずなので必要事項を入力しましょう。 特に制限がなければ全てONにて最後に名前を決めましょう!
クレデンシャル情報の作成に成功したら下記の様な画面が出てくるはずです!
おめでとうございます! これでPinataのAPIを利用するためのクレデンシャル情報を作成することができました!
3. クレデンシャル情報をコピー&ペーストする
次に利用するのはここで表示されているAPI KeyとAPI Secretなのでこの2つをコピーしてしまいましょう! ここで注意点なのですが、この情報は一度しか表示されないため閉じてしまった場合は作り直す必 要があるので忘れずにコピーしてください!
コピーした情報は、frontend/neardev/dev-account.env
ファイルに貼り付けます。
CONTRACT_NAME=<YOUR_CONTRACT_NAME>
PINATA_API_Key=<YOUR_API_KEY>
PINATA_API_Secret=<YOUR_API_SECRET>
ここまで完了したら準備万端です! いよいよコンポーネントを実装していきます!