https://github.com/koltyakov/pnp-upload
SharePoint: Large files upload example using PnPjs from Node.js
https://github.com/koltyakov/pnp-upload
example nodejs pnpjs sharepoint typescript
Last synced: about 1 month ago
JSON representation
SharePoint: Large files upload example using PnPjs from Node.js
- Host: GitHub
- URL: https://github.com/koltyakov/pnp-upload
- Owner: koltyakov
- License: mit
- Created: 2018-09-18T09:00:02.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T01:16:17.000Z (over 2 years ago)
- Last Synced: 2025-04-08T09:25:29.677Z (about 1 month ago)
- Topics: example, nodejs, pnpjs, sharepoint, typescript
- Language: TypeScript
- Homepage:
- Size: 676 KB
- Stars: 13
- Watchers: 5
- Forks: 3
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://koltyakov.visualstudio.com/SPNode/_build/latest?definitionId=16&branchName=master)
# SharePoint: Large files upload example using PnPjs from Node.js
## Supported SharePoint versions
- SharePoint Online
- SharePoint On-Prem (2019/2016)## Dependencies
```bash
npm install
```
## TestReplace `./test/ReplaceWithLargeOne.avi` with a large file to upload to SharePoint.
In a console, run the following command:
```bash
npm run test
```Provide SharePoint credentials during first execution.

## Upload method
PnPjs's `.addChunked` API implementation is used for uploading a large document in chunks.
## Authentication
A variety of different authentication strategies are covered using `node-sp-auth` library.
`pnp-auth` Node.js fetch client is used to proxy all available auth strategies.
## Usage sample
```typescript
const filePath = './file-path.ext';
const folderUrl = 'Shared Documents';
// context - authentication context, see `./test/upload.test.ts` for more detailsconst upload = new Upload(context);
const folderRelativeUrl = `/${context.siteUrl.split('/').slice(3).join('/')}/${folderUrl}`;let progress: ProgressBar = null;
upload
.addChunked(folderRelativeUrl, filePath, (data) => {
if (!progress) {
progress = new ProgressBar(`Uploading ${filePath} [:bar] ${data.fileSize} B`, { total: data.totalBlocks });
}
progress.tick();
})
.then(() => console.log('Done'))
.catch(console.warn);
```