Commit Upload Session
Commit Upload Session
The final step in a chunked upload is to commit the session.
To commit a file upload session, call the
POST /files/upload_sessions/:id/commit
with a list of uploaded
parts to commit.
cURL
curl -X POST https://upload.box.com/api/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"
}
}'
Java
//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);
Python
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('Successfully uploaded file {0} with description {1}'.format(uploaded_file.id, uploaded_file.description))
Node
// Finalize upload session 93D9A837B45F
client.files.commitUploadSession(
'93D9A837B45F',
fileHash.digest('base64'),
{description: 'A file I uploaded in chunks!'},
callback
);
Response
When successful, the API returns a HTTP 201 Created
status code with a
File
object.
In some cases, creating the parts might not be ready yet and the API will return
a 202 Accepted
status code instead. In this case the application should check
the retry-after
header and retry committing after the number of seconds
specified.