アップロードセッションを閉じて、アップロード済みのチャンクからファイルを作成します。
実際のエンドポイントURLはCreate upload session
およびGet upload session
エンドポイントが返します。
sha=fpRyg5eVQletdZqEKaFlqwBXJzM=
ファイル全体のRFC3230メッセージのダイジェスト。
サポートされているのはSHA1のみです。SHA1ダイジェストはBase64でエンコードされている必要があります。このヘッダーの形式は、sha=BASE64_ENCODED_DIGEST
です。
1
変更を加える前にこの項目が最近変更されていないことを確認します。
その項目の最後に認識されたetag
値をこのヘッダーに渡すと、それ以降に項目が変更されている場合、エンドポイントは412 Precondition Failed
を返して失敗します。
1
項目が変更されている場合にのみ、その項目を返します。
その項目の最後に認識されたetag
値をこのヘッダーに渡すと、それ以降に項目が変更されていない場合、エンドポイントは304 Not Modified
を返して失敗します。
D5E3F7A
アップロードセッションのID。
アップロードされたパーツのリストの詳細
リスト内のファイルオブジェクトを返します。
すべてのチャンクがすでにアップロードされているものの、まだ処理されていない場合に返されます。
アップロードセッションを調べてチャンク処理の進捗状況に関する詳細情報を取得し、すべてのチャンクが処理された後でファイルのコミットを再試行します。
ターゲットフォルダに同じ名前のファイルがすでに存在する場合は、エラーを返します。
If-Match
またはIf-None-Match
条件に一致しなかった場合は、エラーを返します。
予期しないクライアントエラー。
curl -i -X POST "https://upload.box.com/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/commit" \
-H "authorization: Bearer <ACCESS_TOKEN>" \
-H "digest: sha=fpRyg5eVQletdZqEKaFlqwBXJzM=" \
-H "content-type: application/json" \
-d '{
"parts": [
{
"part_id": "BFDF5379",
"offset": 0,
"size": 8388608,
"sha1": "134b65991ed521fcfe4724b7d814ab8ded5185dc"
},
{
"part_id": "E8A3ED8E",
"offset": 8388608,
"size": 1611392,
"sha1": "234b65934ed521fcfe3424b7d814ab8ded5185dc"
}
],
"attributes": {
"content_modified_at": "2017-04-08T00:58:08Z"
}
}'
await client.chunkedUploads.createFileUploadSessionCommit(
uploadSessionId,
{ parts: parts } satisfies CreateFileUploadSessionCommitRequestBody,
{ digest: digest } satisfies CreateFileUploadSessionCommitHeadersInput,
);
client.chunked_uploads.create_file_upload_session_commit(
upload_session_id, parts, digest
)
await client.ChunkedUploads.CreateFileUploadSessionCommitAsync(uploadSessionId: uploadSessionId, requestBody: new CreateFileUploadSessionCommitRequestBody(parts: parts), headers: new CreateFileUploadSessionCommitHeaders(digest: digest));
//Creates the file hash
byte[] digestBytes = digest.digest();
//Base64 encoding of the hash
String digestStr = Base64.encode(digestBytes);
//Commit the upload session. If there is a failure, abort the commit.
BoxFile.Info fileInfo = session.commit(digestStr, parts, null, null, null);
import hashlib
sha1 = hashlib.sha1()
# sha1 should have been updated with all the bytes of the file
file_atributes = {
'description': 'A file uploaded via Chunked Upload',
}
upload_session = client.upload_session('11493C07ED3EABB6E59874D3A1EF3581')
uploaded_file = upload_session.commit(sha1.digest(), file_atributes=file_atributes)
print(f'Successfully uploaded file {uploaded_file.id} with description {uploaded_file.description}')
// Finalize upload session 93D9A837B45F
client.files.commitUploadSession(
'93D9A837B45F',
fileHash.digest('base64'),
{description: 'A file I uploaded in chunks!'},
callback
);
{
"entries": [
{
"etag": "1",
"id": "12345",
"type": "file",
"file_version": {
"id": "12345",
"type": "file_version",
"sha1": "134b65991ed521fcfe4724b7d814ab8ded5185dc"
},
"name": "Contract.pdf",
"sequence_id": "3",
"sha1": "85136C79CBF9FE36BB9D05D0639C70C265C18D37",
"content_created_at": "2012-12-12T10:53:43-08:00",
"content_modified_at": "2012-12-12T10:53:43-08:00",
"created_at": "2012-12-12T10:53:43-08:00",
"created_by": {
"id": "11446498",
"type": "user",
"login": "ceo@example.com",
"name": "Aaron Levie"
},
"description": "Contract for Q1 renewal",
"item_status": "active",
"modified_at": "2012-12-12T10:53:43-08:00",
"modified_by": {
"id": "11446498",
"type": "user",
"login": "ceo@example.com",
"name": "Aaron Levie"
},
"owned_by": {
"id": "11446498",
"type": "user",
"login": "ceo@example.com",
"name": "Aaron Levie"
},
"parent": {
"etag": "1",
"id": "12345",
"type": "folder",
"name": "Contracts",
"sequence_id": "3"
},
"path_collection": {
"entries": [
{
"etag": "1",
"id": "12345",
"type": "folder",
"name": "Contracts",
"sequence_id": "3"
}
],
"total_count": 1
},
"purged_at": "2012-12-12T10:53:43-08:00",
"shared_link": {
"access": "open",
"download_count": 3,
"download_url": "https://www.box.com/shared/static/rh935iit6ewrmw0unyul.jpeg",
"effective_access": "company",
"effective_permission": "can_download",
"is_password_enabled": true,
"permissions": {
"can_download": true,
"can_edit": false,
"can_preview": true
},
"preview_count": 3,
"unshared_at": "2018-04-13T13:53:23-07:00",
"url": "https://www.box.com/s/vspke7y05sb214wjokpk",
"vanity_name": "my_url",
"vanity_url": "https://acme.app.box.com/v/my_url/"
},
"size": 629644,
"trashed_at": "2012-12-12T10:53:43-08:00",
"allowed_invitee_roles": [
"editor"
],
"classification": {
"color": "#FF0000",
"definition": "Content that should not be shared outside the company.",
"name": "Top Secret"
},
"comment_count": 10,
"disposition_at": "2012-12-12T10:53:43-08:00",
"expires_at": "2012-12-12T10:53:43-08:00",
"expiring_embed_link": {
"access_token": "c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ",
"expires_in": 3600,
"restricted_to": [
{
"object": {
"etag": "1",
"id": "12345",
"type": "folder",
"name": "Contracts",
"sequence_id": "3"
},
"scope": "item_download"
}
],
"token_type": "bearer",
"url": "https://cloud.app.box.com/preview/expiring_embed/..."
},
"extension": "pdf",
"has_collaborations": true,
"is_accessible_via_shared_link": true,
"is_associated_with_app_item": true,
"is_externally_owned": true,
"is_package": true,
"lock": {
"app_type": "office_wopiplus",
"created_at": "2012-12-12T10:53:43-08:00",
"created_by": {
"id": "11446498",
"type": "user",
"login": "ceo@example.com",
"name": "Aaron Levie"
},
"expired_at": "2012-12-12T10:53:43-08:00",
"id": "11446498",
"is_download_prevented": true,
"type": "lock"
},
"metadata": {
"enterprise_27335": {
"marketingCollateral": {
"$canEdit": true,
"$id": "01234500-12f1-1234-aa12-b1d234cb567e",
"$parent": "folder_59449484661",
"$scope": "enterprise_27335",
"$template": "marketingCollateral",
"$type": "properties-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0",
"$typeVersion": 2,
"$version": 1
}
}
},
"permissions": {
"can_delete": true,
"can_download": true,
"can_invite_collaborator": true,
"can_rename": true,
"can_set_share_access": true,
"can_share": true,
"can_annotate": true,
"can_comment": true,
"can_preview": true,
"can_upload": true,
"can_view_annotations_all": true,
"can_view_annotations_self": true
},
"representations": {
"entries": [
{
"content": {
"url_template": "https://dl.boxcloud.com/api/2.0/internal_files/123/versions/345/representations/png_paged_2048x2048/content/{+asset_path}?watermark_content=4567"
},
"info": {
"url": "https://api.box.com/2.0/internal_files/123/versions/345/representations/png_paged_2048x2048"
},
"properties": {
"dimensions": "2048x2048",
"paged": true,
"thumb": true
},
"representation": "png",
"status": {
"state": "success"
}
}
]
},
"shared_link_permission_options": [
"can_preview"
],
"tags": [
"approved"
],
"uploader_display_name": "Ellis Wiggins",
"version_number": "1",
"watermark_info": {
"is_watermarked": true
}
}
],
"total_count": 1
}