Загрузить файл на Google Drive с помощью WebClient - PullRequest
0 голосов
/ 10 ноября 2018

В PowerShell v2 я пытаюсь загрузить файл на Google Drive. Поскольку в v2 нет командлета Invoke-RestMethod, я должен использовать класс .NET WebClient.

Ссылка: https://www.connorcg.com/uploading-and-downloading-from-google-drive-via-api-with-powershell-and-oauth2.html

$webclient = New-Object System.Net.WebClient
$webclient.Headers.Add("Authorization", "Bearer $AccessToken")
$webclient.Headers.Add("Content-Type", 'multipart/related; boundary=boundary')
$webclient.Headers.Add("Content-Length", $UploadBody.Length) # This is wrong, why?
$webclient.UploadString($URL, "POST", $UploadBody)

Исключение:

Заголовок «Content-Length» должен быть изменен с использованием соответствующего свойства или метода.

PS> $Error[0].Exception.ToString()
System.Management.Automation.MethodInvocationException: Exception calling
"UploadString" with "3" argument(s): "An exception occurred during a WebClient
request."
---> System.Net.WebException: An exception occurred during a WebClient request.
---> System.ArgumentException: The 'Content-Length' header must be modified
using the appropriate property or method.

Без «Content-Type» загруженный файл отправляется в корневую папку и содержит мое тело HTML.

Без «Content-Length» загрузка прошла успешно, и все выглядит хорошо.

Я все еще не понимаю, почему заголовок «Content-Length» неправильный и какова цель этого. Это обязательно с точки зрения возможных сбоев / отбрасываний или правильного кодирования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...