ITよもやま日記

虚弱ITエンジニアの備忘録

GrowiのAPIを使ってファイルをアップロードしてみる

最初にファイルを添付するためのページを作成しておく。
growiのdocsを参考に、作ったページへpythonでファイル追加してみる。(getとpostを飛ばすだけなので、言語は特に関係ない)

pyファイルの作成

ファイル追加用のpyを作成する。

mkdir /opt/userbat
cd /opt/userbat
vi attachadd.py

requestsをインポート、初期値を設定する

インストールされていない場合はpip install requestsを実行してインストールする。

import requests

url = 'http://Growiサーバアドレス:3000/_api'
acstoken='アクセストークン'
uploadfilepath = '/temp/hogehoge.png'
pagepath=’/user/hogehoge’

ページのIDを取得する

pages.listでパス配下のページIDを取得する、pages.getとかでも良い。
pages.list等の値を取得するAPIは基本的にGETらしい。
ページ一覧取得参考:
https://docs.growi.org/redoc.html#operation/listPages

payload= {"access_token": acstoken}
rsult = requests.request(method='get', url=url + “/pages.list?path=” + pagepath, data=payload)

obj=rsult.json()
pid = obj["pages"][0]["id"]

ページIDを指定してファイルを追加する

ファイル追加用のAPI、attachments.addにPOSTでデータを送付する。
添付ファイル追加参考:
https://docs.growi.org/redoc.html#operation/addAttachment

payload = {"access_token": acstoken,
          "page_id":pid }

# MIMEの指定を正しくすれば、ブラウザでPDFを開いたりできる。
files = {'file': ("g.png",  open(uploadfilepath , 'rb'), "application/octet-stream")}
res = requests.post(url + "/attachments.add", data=payload,files=files)

# アップロードIDが含まれるリクエストを取得
upres = res.json()

pyファイル実行

pythonでソースを読み込む。今回の環境はCentOSにデフォルトでインストールされているpython3.6を使用。

cd /opt/userbat
python3.6 ./attachadd.py

ページを開いたとき、記事下に添付ファイルが追加されいるはず。
失敗した時は、リクエストにエラーコード等が返却される。