Bot のコンテンツ、Drive、ユーザー、アドレス帳などで利用するファイルをアップロードまたはダウンロードする方法について説明します。
ファイルのアップロードは以下の流れで行います。
各リソースのファイルのアップロード API を使用して、ファイルをアップロードする URL を取得します。
API ごとに、Request URL や Request Body の内容、アップロードできるファイルの最大サイズなどの制約が異なります。詳細はそれぞれの API ガイドを参照してください。
| HTTP Request | Description |
|---|---|
| POST /bots/{botId}/attachments | コンテンツアップロード |
| POST /users/{userId}/photo | ユーザーの写真アップロード |
| POST /contacts/{contactId}/photo | 連絡先写真のアップロード |
| POST /boards/{boardId}/posts/{postId}/attachments | 投稿の添付ファイル登録 |
| POST /boards/{boardId}/posts/{postId}/comments/{commentId}/attachments | コメントの添付ファイル登録 |
| POST /groups/{groupId}/note/posts/{postId}/attachments | 組織/グループノートの投稿の添付ファイル登録 |
| POST /groups/{groupId}/folder/files/{fileId} | 組織/グループ - ファイルのアップロード |
| POST /groups/{groupId}/folder/files | 組織/グループ - ルートフォルダにファイルをアップロード |
| POST /users/{userId}/drive/files/{fileId} | マイドライブ - ファイルのアップロード |
| POST /users/{userId}/drive/files | マイドライブ - ルートフォルダにファイルをアップロード |
| POST /sharedrives/{sharedriveId}/files/{fileId} | 共有ドライブ - ファイルをアップロード |
| POST /sharedrives/{sharedriveId}/files | 共有ドライブ - ルートフォルダにファイルをアップロード |
| POST /users/{userId}/drive/sharedfolders/{sharedFolderId}/files/{fileId} | 共有されたフォルダ - ファイルをアップロード |
| POST /users/{userId}/drive/sharedfolders/{sharedFolderId}/files | 共有されたフォルダ - ルートフォルダにファイルをアップロード |
ファイルのアップロード API は POST リクエストで呼び出します。Content-Type には ”application/json; charset=UTF-8" を指定します。
POST (Content-Type: application/json; charset=UTF-8)パラメータは JSON 形式で指定します。
一例として、Bot API でコンテンツをアップロードする場合のリクエストを記載します。
その他の API を利用する際に指定するパラメータについては、それぞれの API ガイドを参照してください。
| パラメータ | タイプ | 説明 |
|---|---|---|
| fileName | String | ファイル名 required |
{ "fileName": "uploadfile.jpg"}呼び出しに成功すると、ファイルのアップロード URL が返ります。
| パラメータ | タイプ | 説明 |
|---|---|---|
| uploadUrl | String | ファイルのアップロード URL |
{ "uploadUrl": "https://apis-storage.worksmobile.com/k/emsg/r/jp1/1648632512537498188.1648718912.1.3437109.0.0.0/uploadfile.jpg"}取得したファイルのアップロード URL にファイルをアップロードします。
参考
Drive API でファイルのアップロードが途中で失敗した場合、resume プロパティに true を指定してファイルのアップロード API を呼び出し、取得したファイルのアップロード URL を Content-Range を付与して呼び出すことで、ファイル アップロードの再開ができます。
取得したファイルのアップロード URL (uploadUrl)
ファイルのアップロード API は POST リクエストで呼び出します。RFC-1867 に従い、フォーム形式でファイルをアップロードします。
POST (Content-Type: multipart/form-data; boundary="$boundary”)POST k/emsg/r/jp1/1648632512537498188.1648718912.1.3437109.0.0.0/uploadfile.jpg HTTP/1.1Host: apis-storage.worksmobile.comAuthorization: Bearer ...Content-Length: 1000Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW----WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="Filedata"; filename="uploadfile.jpg"Content-Type: image/jpeg(data)----WebKitFormBoundary7MA4YWxkTrZu0gW--POST k/emsg/r/jp1/1648632512537498188.1648718912.1.3437109.0.0.0/uploadfile.jpg HTTP/1.1Host: apis-storage.worksmobile.comAuthorization: Bearer ...Content-Length: 1000Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gWContent-Range: 100-999/1000----WebKitFormBoundary7MA4YWxkTrZu0gWContent-Disposition: form-data; name="Filedata"; filename="uploadfile.jpg"Content-Type: image/jpeg(data)----WebKitFormBoundary7MA4YWxkTrZu0gW--curl -XPOST 'https://apis-storage.worksmobile.com/k/emsg/r/jp1/1648632512537498188.1648718912.1.3437109.0.0.0/uploadfile.jpg' \-H 'Authorization: Bearer ...' \-H 'Content-Type: multipart/form-data' \-F 'resourceName=uploadfile.jpg' \-F 'FileData=@uploadfile.jpgアップロードに成功すると、HTTP Status Code 200 番台を返し、応答内容が JSON 形式で返されます。
応答に含まれるプロパティは、アップロード先のサービスにより異なります。
| パラメータ | タイプ | 説明 |
|---|---|---|
| fileId | String | ファイル ID |
| fileName | String | ファイル名 |
| fileSize | Integer | ファイルサイズ |
| パラメータ | タイプ | 説明 |
|---|---|---|
| fileId | String | ファイル ID |
| fileName | String | ファイル名 |
| fileSize | Integer | ファイルサイズ |
| parentFileId | String | 親フォルダのファイル ID |
| accessedTime | String | 最終アクセス日時 |
| createdTime | String | 作成日時 |
| filePath | String | ファイルパス |
| fileType | String | ファイルタイプ |
| hasPermission | Boolean | 権限設定有無 |
| permissionRootFileId | String | 権限ルートフォルダのファイル ID |
| resourceLocation | Integer | リソースの位置コード |
| statuses | Array(String) | ファイル状態 |
| modifiedTime | String | 修正日時 |
HTTP/1.1 201 CreatedContent-Type: application/json;charset=UTF-8Content-Length: 120{ "fileId": "jp1.1648634296934279638.1648720696.1.3437109.0.0.0", "fileName": "uploadfile.jpg", "fileSize": "11"}ファイルのダウンロードは以下の流れで行います。
各リソースのファイルのダウンロード API を使用して、ファイルのダウンロード URL を取得します。
API ごとに、Request URL と、指定する必要のあるパラメータが異なります。詳細はそれぞれの API ガイドを参照してください。
GET
パラメータは Path 内に記載します。
一例として、Bot API でコンテンツを取得する場合に指定する必要のあるパラメータを記載します。
その他の API を利用する際に指定するパラメータについては、それぞれの API ガイドを参照してください。
| パラメータ | タイプ | 説明 |
|---|---|---|
| fileId | String | ファイル ID required |
| botId | integer | Bot ID required |
呼び出しに成功すると、HTTP Status Code 302 が返され、ダウンロード URL は HTTP Location レスポンス ヘッダーで示されます。
注意
- レスポンスヘッダーのフィールド名は大文字小文字を区別せずに扱ってください。表記が予告なく変更される可能性があります。
- 参考: https://www.rfc-editor.org/rfc/rfc9110#section-5.1
HTTP/1.1 302 FoundLocation: https://apis-storage.worksmobile.com/jp1.1628695315008671000.1628781715.0.1000001.0.0.0HTTP Location レスポンス ヘッダーで示されるダウンロード URL にアクセスし、ダウンロードを実行します。
注意
- ダウンロード URL にアクセスする際にも Authorization ヘッダを指定する必要があります。
- 利用するライブラリによっては、ダウンロード URL を取得する API を呼び出した際に、Authorization ヘッダを指定せずに自動的にリダイレクトされる場合があります。
curl -XGET 'https://apis-storage.worksmobile.com/jp1.1628695315008671000.1628781715.0.1000001.0.0.0' \-H 'Authorization: Bearer ...'HTTP/1.1 200 OKContent-Type: image/jpegContent-Length: 11(FileData)