Aikの技術日記

技術的な進捗とか成果とかを細々と投稿するブログです。時々雑記も。

esa.ioにてAPI経由で画像をアップロードするやり方

はじめに

お久しぶりです、筆者です。
年末も近づき仕事納めする中、自身の日々の日記もちょっとずつ整理を行なってます。

そんな中、自分の日記ツールとして使ってるesa.ioにて「画像を大量にアップロードしたい」要求が芽生え。
10枚程度なら手でもいいのですが、今回は50枚近くアップロードしたい画像があり…。

流石に手作業はきついと考え「楽に画像アップロードしたい → せや! API使お」と思い、API経由で画像をアップロードしてみました。

本記事では、自分への備忘録がわりに「アップロードに使用したAPI」や「出来たコード」についてまとめていければと。

それではいきましょう٩( ‘ω’ )و

やり方

今回はこちらの記事を参考にしました。
qiita.com

必要な情報が綺麗にまとまっており、大変参考になりました…。

ただ、こちらの記事はcurlベースで画像をアップロードしており。
筆者は訳あってNode.js環境でアップロードしたかったので、その様にコードを修正しました。

先にサンプルコードのURLを貼っておきます:
github.com

ただ、サンプルコードだけ置いて終わりというのも味気ないので。
ここからは、どんなAPIを使ったか&コードの説明ができればと思います。
((コードの方はそんなに難しくは無いんですけどね

どんなAPIを使ったか

執筆当時(2021/12/24)ではesa.ioは「画像アップロード用のAPI」の用意がなく…。
このため、参考記事にある通り:

…という感じで2つのAPIを使いました。
((esaってS3使ってたんですね…。

APIについて見てみましょう。

ダイレクトアップロード用のメタデータを取得するAPI

ダイレクトアップロード用のメタデータを取得するAPIは下記となります:

参考資料はesa.ioのRubyクライアントライブラリのソースコードです。
…そう、このAPI公式のAPI Docsには載ってないんですよね…。

返却値にesa.io上で使用できる画像URLパスが取得できますが、あくまで参照用URLが得られただけであってアクセスしても何もありません。
この参照用URLに、次のAPIを使用しファイルをアップロードする形となります。

※補足説明その1:
Authorizationのesa_AccessTokenについては、以前書いたブログにまとめてあるのでご参照に。
((esaってそもそも何というのも紹介してます
aik0aaat.hatenadiary.jp

※補足説明その2:
ちなみに、この方式を使うとbodyのtypeを変えれば画像以外のファイルもアップロードできます。

メタデータを元にAmazon S3へアップロードするAPI

メタデータを元にAmazon S3へアップロードするAPIは下記となります:

参考記事はAmazon Docsとなります。
POST Object - Amazon Simple Storage Service

色々とbodyデータに入れないといけませんが、大概は先のメタデータ取得APIの返却値をそのまま入れてあげればOKです。

…というか、上記データさえあればサービスガイからでもS3にファイルアップロードできるんだなぁと驚きました…。
こちらのAPIの使い方は、マスタしておけば他の場面でも使えそうです。

お次はこれらを使用しファイルをアップロードしたNode.jsの説明を…。
と思いましたが、あまりに解説することがないのでスキップします。

まぁコード見ればわかるとは思います…。

おわりに

今回は、esa.ioにてAPI経由で画像をアップロードするやり方を紹介しました。
今回の方法を使えば画像だけでなく、PDFファイルなど色んなデータをアップロードできるので、色々やれる幅が広がりそうです。

esa.ioは個人ドキュメント管理ツールとして、ここ1年くらいずっとお世話になってるので…。
またesa.ioで出来ることを見つけたら記事化できればと思います。

それでは|д゚)