---
title: "how to upload a file to a document library using OData in PowerShell with curl or Invoke-RestMehthod"
description: "As I cannot use Pnp.PowerShell with a SharePoint-2019 on premise, AFAIK, I've been trying to do it with OData using curl. Unfortunately it happens to be much more complicated than I thought. I ended..."
url: https://extraproxies.com/how-to-upload-a-file-to-a-document-library-using-odata-in-powershell-with-curl-or-invoke-restmehthod
date: 2024-02-13
modified: 2024-02-13
author: "ExtraProxies"
tags: ["curl", "document", "File", "InvokeRestMehthod", "library", "OData", "PowerShell", "upload", "using"]
type: post
lang: en
---

# how to upload a file to a document library using OData in PowerShell with curl or Invoke-RestMehthod

As I cannot use Pnp.PowerShell with a SharePoint-2019 on premise, AFAIK, I’ve been trying to do it with OData using curl. Unfortunately it happens to be much more complicated than I thought.

I ended up building this command:

```
curl -vvv -n -X POST  "https://sharepoint.site/site/aaa/_api/web/GetFolderByServerRelativeUrl('/site/aaa/library/folder')/Files/add" -T a.xlsx -H "Accept: application/json;odata=nometadata" -H "X-RequestDigest: xxxxxx"
```

HTTP/1.1 400 Bad Request

or

```
curl -vvv -n -X POST  "https://sharepoint.site/site/aaa/_api/web/GetFolderByServerRelativeUrl('/site/aaa/library/folder')/Files/add(url=a.xlsx,overwrite=true)" -T a.xlsx -H "Accept: application/json;odata=nometadata" -H "X-RequestDigest: xxxxxx"
```

HTTP/1.1 403 FORBIDDEN

{"odata.error":{"code":"-2130575252, System.Runtime.InteropServices.COMException","message":{"lang":"fr-FR","value":"La validation de la sécurité de cette page a expiré. Cliquez sur Précédente dans votre navigateur web, actualisez la page et retentez l’opération."}}}* Connection #0 to host sharepoint.site left intact

I found this PowerShell function: Upload-FileToShp, but I cannot make it work in my case, so doesn’t help for having a correct `curl` or `Invoke-RestMethod`!

WHat’s missing?
