Google Диск Загрузка файла, состоящего из нескольких частей MIME в кодировке Base64, с PowerShell: искаженная ошибка - PullRequest
0 голосов
/ 21 ноября 2018

Поиск по токену все выяснил.

Загрузка файлов на Google Drive.

Получение ошибки

Вот команда powershell, которую я использую:

$response = Invoke-RestMethod -Uri "<a href="https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart" rel="nofollow noreferrer">https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart</a>" -Method Post -Headers $uploadHeaders -Body $uploadBody

Вот строка для переменной $ uploadBody


--314159265358979323846
Content-Type: application/json; charset=UTF-8

    {
    "description":  "TestCSV",
    "name":  "test-emp.csv",
    "originalFilename":  "test-emp.csv"
}

--314159265358979323846
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream


    c0FNQWNjb3VudE5hbWUsRU1QX05VTQ0KYnNtaXRoLDc3Mzk5Mg0KbHNvbmcsMzM3MTEwDQpnc3Vkbyw2NDkwNTc
--314159265358979323846--

Это не удалось - изменился только файл данных:

--314159265358979323846
Content-Type: application/json; charset=UTF-8

    {
    "description":  "TestCSV",
    "name":  "csv3.csv",
    "originalFilename":  "csv3.csv"
}

--314159265358979323846
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream


    c2VxLGZpcnN0LGxhc3QNCjEsQW15LEJhcmtlcg0KMixMZWUsU2FsYXphcg0KMyxFc3RlbGxhLEtlbm5lZHkNCg
--314159265358979323846--

Для полноты здесьявляется параметром заголовка IDictionary для $ uploadHeaders


Name                           Value                                                                                                                           
----                           -----                                                                                                                           
Authorization                  Bearer ya29.GlxbBiz86xKlRnjzQY2z70vHtWfL4sr28BvX-OKio8PbcEfJ0l7tQgx9btNqMdanYXG_WzSD74WD_15903vn0mYO0G0uI8lez5g77Z_W0gKrIRh_s...
Content-Type                   multipart/related; boundary=314159265358979323846                                                                               
Content-Length                 400                                                                                                                             

Я много читал об этом и убедился, что до полезной нагрузки было два r n.Любые указатели будут с благодарностью!

Спасибо!

1 Ответ

0 голосов
/ 07 января 2019

Вы должны переименовать файл после его загрузки.

$sourceFile = 'C:\temp\allisv22018201810101009.csv'

$sourceItem = Get-Item $sourceFile

# If uploading to a Team Drive, set this to 'true'
$supportsTeamDrives = 'false'

# Set the file metadata
$uploadMetadata = @{
    originalFilename=$sourceItem.Name
    name=$sourceItem.Name
    description="TestCSV"
}

# Set the upload headers
$uploadHeaders = @{
    Authorization="Bearer $accessToken"
    "Content-Type" = "application/json"
}

# Perform the upload
try {
    $response = Invoke-RestMethod -Uri "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart" -Method Post -Headers $uploadHeaders -InFile $SourceFile
    $urifile = "https://www.googleapis.com/drive/v3/files/$($response.id)"
    $renameResponse = Invoke-RestMethod -Uri $urifile -Method Patch -Headers $uploadHeaders -Body '{ "name":"HappyFile.csv" }'

Если вы успешно загрузите свой файл, он вернет значение в $ urifile , и вы можете использовать его для переименованияфайл.

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