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