1.7 KiB
1.7 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| sharepoint-graph-large-file-upload | Uploading files to SharePoint via Graph — simple PUT <4MB, chunked upload session >=4MB; verify counts via delta |
|
Pushing a folder tree into a SharePoint doc library via Microsoft Graph (app-only):
- <4MB: simple
PUT /drives/{drive}/root:/{path}:/content. - >=4MB: MUST use an upload session —
POST .../root:/{path}:/createUploadSessionthenPUTthe file in chunks (multiple of 320 KiB; 10 MB works) with aContent-Range: bytes {start}-{end}/{total}header. In PowerShell 5.1Invoke-RestMethod -Headers @{ 'Content-Range'=... }handles this fine. A naive script that only does <4MB PUTs will silently skip every large file and never reach the target count. - Long Windows paths (>260): prefix the local path with
\\?\for[IO.File]reads. - Idempotent sync: existence-check each file (
GET root:/{path}?$select=size) and skip if size matches — this also catches/repairs partial-upload residue from earlier failed runs. - Throughput: a single sequential upload stream to SharePoint Online plateaus ~40 Mbps
regardless of link speed (per-session SPO throttle + PS5.1 HTTP stack + Expect100Continue).
For speed use parallel file streams + larger chunks +
Expect100Continue=$false. - Verify total file count with the Graph delta endpoint
(
/drives/{drive}/root/delta) — whole-drive enumeration in a few paged calls, far cheaper than recursive/children.
Proven end-to-end on Birth Biologic Quality Systems (3,768 files, 301 >=4MB, ~29.7 GB; largest 3.94 GB). Dispatched via GuruRMM — see gururmm-command-timeout-seconds.