I have a script to upload single file with file name specified to sharepoint, I am looking how can we upload all the files that listed in a folder to sharepoint.
Uploading single file
var filepath = C:\\Documents\\Files\\file.txt;
var url = <sharepointurl>/file.txt;
var accessToken = "<token>";
//These are getting main url and relative url for the site
var filename = url.split('\\').pop().split('/').pop();
var url = url.replace(filename,'');
var mainUrl = url.substring(0,nthIndex(url, "/", 2))
var relativeUrl = url.substring(url.indexOf("sites/"));
try {
postFile(mainUrl + "/_api/web/GetFolderByServerRelativeUrl('/" + relativeUrl + "')/Files/add(url='" + filename + "',overwrite=true)",filepath,accessToken,false);
}
catch(err) {
}
function postFile(url, fileName, accessToken, async) {
// Prepare post data
var stream = WScript.CreateObject("ADODB.Stream");
stream.Type = 1;
stream.Open()
// Begin File Upload
stream.Write(readBinaryFile(fileName));
// Finish Upload Content
stream.Position = 0;
// post request
var xhr = WScript.CreateObject("Microsoft.XMLHTTP");
xhr.Open("POST", url, async);
xhr.SetRequestHeader("Accept", "application/json; odata=verbose");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.SetRequestHeader("Authorization", "Bearer " + accessToken);
xhr.Send(stream.Read());
resultVar = xhr.responseText;
}
function nthIndex(str, pat, n){
var L= str.length, i= -1;
while(n-- && i++<L){
i= str.indexOf(pat, i);
if (i < 0) break;
}
return i;
}
function readBinaryFile(fileName) {
var stream = WScript.CreateObject("ADODB.Stream");
stream.Type = 1;
stream.Open();
stream.LoadFromFile(fileName);
return stream.Read();
}
So in the above code I am giving the full path(C:\Documents\Files\file.txt) to upload the file to sharepoint. Here I am looking if I give folderpath like "C:\Documents\Files\" and I need to upload all the files present in the folder.