本日は HoloLens の調査枠です。
前回記事の続きです。
bluebirdofoz.hatenablog.com
今回はPOSTメッセージを使って HoloLens の特定のディレクトリにファイルをアップロードしてみます。
なお、HoloLens で利用可能な API は以下の公式ページにまとめられています。
・デバイス ポータル コア API リファレンス(すべての Windows 10 デバイスに共通する API)
docs.microsoft.com
・デバイス ポータル Mixed Reality API リファレンス(HoloLens で利用できるすべての REST API の拡張リスト)
docs.microsoft.com
pythonサンプルコード
HoloLens の特定のディレクトリにファイルをアップロードする python スクリプトを作成します。
ファイルアクセスの API は以下の /api/filesystem/apps/file です。
ファイルをアップロードする場合、POSTメッセージを利用する必要があります。
また、ブラウザを介さないWifi接続の場合はSSLを無効にしないとPOSTが失敗するようです。
DevicePortalから Preferences -> SSLconnection -> required のチェックを外しておきます。
ローカルフォルダにある upload.jpg を、HoloLens の Picuture フォルダにアップロードする python スクリプトを作成してみました。
・UpLoadJPG.py
import requests import base64 import os # 実行指定で呼び出されているかチェック if __name__ == "__main__": print('--------------------------- START ---------------------------') # DevicePortal接続のための設定項目 # username:ユーザ名 # password:パスワード # Wifi接続ではSSLを無効にする必要がある(よってhttp接続) # DevicePortalのPreferences->SSLconnectionのrequiredのチェックを外す username = 'USERNAME' password = 'PASSWORD' ipaddress = '192.168.XX.XXX' # RestAPIアクセスのURLを作成 api = '/api/filesystem/apps/file' url = 'http://' + ipaddress + api # パラメータを指定(Pictureフォルダ直下に保存) payload = {'knownfolderid': 'Pictures', 'packagefullname': '\\', 'path': '\\'} # アップロードファイルの指定 uploadDir = 'C:\\Users\\PCNAME\\Desktop\\hololens\\20190119\\HoloLensAPITest\\HoloLensAPITest\\TestProgram\\Upload' fileName = 'upload.jpg' uploadFilePath = os.path.join(uploadDir, fileName) # RestAPIのURLと設定を指定してGET/POST実行 header = {'Content-Type': 'multipart/form-data'} fileBinary = open(uploadFilePath, 'rb') file = {'file': (fileName, fileBinary, 'image/jpeg')} response = requests.post(url, params = payload, files = file, auth=(username, password)) # RestAPIの応答メッセージを受信(正常の場合 code=200 が返却) print(response.text) print(response.status_code) print('--------------------------- END ---------------------------')
実行してみた結果が以下になります。
指定したアップロード先フォルダを確認すると、画像ファイルがアップロードできています。