We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.
Forum Discussion
PDanos
8 years agoNew member | Level 2
Upload Files Function Powershell - Bad Request
I'm trying to upload files using Powershell to a folder inside our company Dropbox. I'm using a function I googled somewhere (I don't have the URL at hand, sorry about that):
function Upload-FileToDropbox { Param( [Parameter(Mandatory=$true)] [string]$SourceFilePath, [Parameter(Mandatory=$true)] [string]$TargetFilePath, [Parameter(Mandatory=$true)] [string]$DropBoxAccessToken ) $arg = '{ "path": "' + $TargetFilePath + '", "mode": "add", "autorename": true, "mute": false }' $authorization = "Bearer $DropBoxAccessToken" $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", $authorization) $headers.Add("Dropbox-API-Arg", $arg) $headers.Add("Content-Type", 'application/octet-stream') Invoke-RestMethod -Uri https://content.dropboxapi.com/2/files/upload -Method Post -InFile $SourceFilePath -Headers $headers }
For this script, I've created a new team app with Permission type Team member file access, and requested an access token. For the parameters in this function, I'm using something like this:
$SourceFilePath = "C:\TEMP\test.txt" $TargetFilePath = "/IT/test.txt"
However, when I try to upload a file, I'm getting the following error:
Invoke-RestMethod : The remote server returned an error: (400) Bad Request.
I tried running the Invoke-RestMethod manually, creating the headers by hand, but I get the same error over and over again. What am I missing?
Thank you for the help!
Whenever debugging issues like this (or to retrieve the result, e.g., the file metadata, etc., even in the case of success) be sure to read the response body. It will contain more information, such as a specific error message.
Based on your description though, it looks like the issue is that you're using a Business app with the team member file access feature without specifying the 'Dropbox-API-Select-User' header, which identifies which member of the Business team to operate on.
So, you should either add that header with the relevant member ID, or, if you only need to upload to a specific account anyway, register a different app with the full Dropbox or app folder permission instead. Those aren't Business apps, and just operate on a single account instead of the whole team. They can still be linked to accounts on Business teams though.
- Greg-DBDropbox Staff
Whenever debugging issues like this (or to retrieve the result, e.g., the file metadata, etc., even in the case of success) be sure to read the response body. It will contain more information, such as a specific error message.
Based on your description though, it looks like the issue is that you're using a Business app with the team member file access feature without specifying the 'Dropbox-API-Select-User' header, which identifies which member of the Business team to operate on.
So, you should either add that header with the relevant member ID, or, if you only need to upload to a specific account anyway, register a different app with the full Dropbox or app folder permission instead. Those aren't Business apps, and just operate on a single account instead of the whole team. They can still be linked to accounts on Business teams though.
- PDanosNew member | Level 2
Hi Greg,
Thank you so much for your help. I seemed to overlook completely the Dropbox-API-Select-User header in the documentation. Before digging into finding the memberID, I chose to follow your suggestion on registering a new app with Full Dropbox permissions, and it did the trick. I was able to upload with no problems.
Also, it's good to know the code was good, so i don't have to change anything on that end.
Thanks again!PS: I found the original link to the code I used for anyone else that wants to use it, and also, to give proper credit: http://laurentkempe.com/2016/04/07/Upload-files-to-DropBox-from-PowerShell/
- DanutNew member | Level 2
Maybe something changed. When trying the above script, I get the following error:
Invoke-RestMethod : {"error_summary": "missing_scope/..", "error": {".tag": "missing_scope", "required_scope": "files.content.write"}}
At line:20 char:5
+ Invoke-RestMethod -Uri https://content.dropboxapi.com/2/files/upl ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommandCould this be related with using TLS 1.2?
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
5,877 PostsLatest Activity: 6 hours agoIf you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!