uploadFile(event){
var file = event.target.files[0];
console.log(file);
var dropboxToken = 'AccessToken'
console.log('FileName:'+file.name);
const maxBlob = 8 * 1000 * 1000;
var workItems = [];
var offset = 0;
var sessionID;
// Slice the file into chunks for upload session
while (offset < file.size) {
var chunkSize = Math.min(maxBlob, file.size - offset);
workItems.push(file.slice(offset, offset + chunkSize));
offset += chunkSize;
}
const task = workItems.reduce((acc, blob, idx, items) => {
if (idx == 0) {
// Start multipart upload of file
return acc.then(function() {
return fetch(dbxURL_start, {
"method": "post",
"headers": {
"Authorization" : "Bearer "+dropboxToken,
"Content-Type": "application/octet-stream",
"Dropbox-API-Arg": "{\"close\":false}"
},
"body": blob
})
.then((response) => {
sessionID = response.session_id;
})
.catch(err => console.log("[ERROR] UPLOAD_SESSION_START : " + err));
})
} else if (idx < items.length-1) {
// Append part to the upload session
return acc.then(function(sessionID) {
return fetch(dbxURL_append, {
"method": "post",
"headers": {
"Authorization" : "Bearer "+dropboxToken,
"Content-Type": "application/octet-stream",
"Dropbox-API-Arg": "{\"cursor\": {\"session_id\": \"" + sessionID + "\",\"offset\":\"" + (idx * maxBlob) + "\"},\"close\":false}"
},
"body": blob
})
.then(() => sessionID)
.catch(err => console.log("[ERROR] UPLOAD_SESSION_APPEND : " + err));
})
} else {
// Last chunk of data, close upload session
return acc.then(function(sessionID) {
return fetch(dbxURL_finish, {
"method": "post",
"headers": {
"Authorization" : "Bearer "+dropboxToken,
"Content-Type": "application/octet-stream",
"Dropbox-API-Arg": "{\"cursor\": {\"session_id\": \"" + sessionID + "\",\"offset\":\"" + (file.size - blob.size) + "\"},\"commit\": {\"path\":\"/render/" + filename + "\",\"mode\":{\".tag\":\"add\"}}, \"close\":true}"
},
"body": blob
})
.then((httpResponse) => {
if (httpResponse.ok){
console.log("HTTP RES : OK")
return httpResponse.ok
} else {
console.log("HTTP RES : NOT OK")
return !httpResponse.ok
}
})
.catch(err => console.log("[ERROR] UPLOAD_SESSION_FINISH : " + err));
})
}
}, Promise.resolve());
task.then(function(result) {
console.log('result:',result);
}).catch(function(error) {
console.error(error);
});
}