This task simplifies the implementation of onedrive's resumable upload.
Refer this documentation for initializing the client.
HTML to select the file for uploading.
<input id="fileUpload" type="file" onchange="fileUpload(this)" />Get files from the input element and start uploading.
async function fileUpload(elem) {
let file = elem.files[0];
try {
let response = await largeFilUpload(client, file, file.name);
} catch (error) {
console.error(error);
}
}function uploadFile() {
fs.readFile(<PATH_OF_THE_FILE>, {}, function (err, file) {
if(err) {
throw err;
}
let fileName = <NAME_OF_THE_FILE>;
largeFileUpload(client, file, fileName)
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});
});
}async function uploadFile(client, file) {
try {
let options = {
path: "/Documents",
fileName: file.name,
rangeSize: 1024 * 1024,
};
const uploadTask = await MicrosoftGraph.OneDriveLargeFileUploadTask.create(client, file, options);
const response = await uploadTask.upload();
console.log(response);
console.log("File Uploaded Successfully.!!");
} catch (err) {
console.log(err);
}
}Lets consider some break down happens in the middle of uploading, with the uploadTask object in hand you can resume easily.
uploadTask.resume();You can create the upload task, and play with it by using sliceFile and uploadSlice methods
let range = uploadTask.getNextRange();
let slicedFile = uploadTask.sliceFile(range);
uploadTask.uploadSlice(slicedFile, range, uploadTask.file.size);