src/util/sp/uploadFile.js
import readFileToString from '../readFileToString';
import respToJson from '../respToJson';
/**
* Upload file to project Documents
*
* @param {File} file File object from upload.
* @param {string} filename Wanted file name. Default file.name.
* @return {Promise}
*/
export default function uploadFile(file, filename) {
filename = filename || file.name;
const siteurl = window._spPageContextInfo.webServerRelativeUrl;
const urlTemplate = `${siteurl}/_api/web/lists/getByTitle('Documents')/RootFolder/Files/add(url='${filename}',overwrite='true')`;
const requestDigest = document.getElementById('__REQUESTDIGEST');
return readFileToString(file)
.then((filedata) => {
return fetch(urlTemplate, {
credentials: 'same-origin',
method: 'POST',
headers: {
'Accept': 'application/json;odata=verbose',
'Content-Type': 'application/json;odata=verbose',
'Content-Length': filedata.length,
'X-RequestDigest': requestDigest && requestDigest.value || '',
'binaryStringRequestBody': 'true',
},
body: filedata,
});
})
.then(respToJson);
}