Last active
January 18, 2018 21:32
-
-
Save ConnorGriffin/8e846a8dc92572264102baea2dfa3f70 to your computer and use it in GitHub Desktop.
Google Drive Upload Excerpt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
This is a fairly simple one-time upload with no options, etc. Consider using this as a base to create a New-GDriveItem type function | |
Modified code, in response to: https://monteledwards.com/2017/03/05/powershell-oauth-downloadinguploading-to-google-drive-via-drive-api/ | |
You should follow the above link to set $accessToken to your access token and understand what is happening here | |
#> | |
# Change this to the file you want to upload | |
$SourceFile = 'C:\Path\To\File' | |
# Get the source file contents and details, encode in base64 | |
$sourceItem = Get-Item $sourceFile | |
$sourceBase64 = [Convert]::ToBase64String([IO.File]::ReadAllBytes($sourceItem.FullName)) | |
$sourceMime = [System.Web.MimeMapping]::GetMimeMapping($sourceItem.FullName) | |
# Set the file metadata | |
$uploadMetadata = @{ | |
originalFilename = $sourceItem.Name | |
name = $sourceItem.Name | |
description = $sourceItem.VersionInfo.FileDescription | |
} | |
# Set the upload body | |
$uploadBody = @" | |
--boundary | |
Content-Type: application/json; charset=UTF-8 | |
$($uploadMetadata | ConvertTo-Json) | |
--boundary | |
Content-Transfer-Encoding: base64 | |
Content-Type: $sourceMime | |
$sourceBase64 | |
--boundary-- | |
"@ | |
# Set the upload headers | |
$uploadHeaders = @{ | |
"Authorization" = "Bearer $accessToken" | |
"Content-Type" = 'multipart/related; boundary=boundary' | |
"Content-Length" = $uploadBody.Length | |
} | |
# Perform the upload | |
$uploadUri = 'https://www.googleapis.com/upload/drive/v3' | |
$response = Invoke-RestMethod -Uri "$uploadUri/files?uploadType=multipart" -Method Post -Headers $uploadHeaders -Body $uploadBody |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment