Как правильно посчитать Content-Length в powershell?
При попытке передать файл через Invoke-WebRequest я рассчитываю количество байт для body:
$boundary = '**********************************************************************'
#$boundary = [System.Guid]::NewGuid().ToString()
$fileBin = [System.IO.File]::ReadAllbytes($filePath)
$filestr64 = [System.Convert]::ToBase64String($fileBin) #-Если потребуется конвертировать в base64
$LF = "`r`n"
$filebin2 = [System.Text.Encoding]::UTF8.GetBytes($fileBin);
$bodyLines = (
"--$boundary",
"Content-Disposition: form-data; name=`"@file`"; filename=`"$fileName`"",
"Content-Type: multipart/x-zip$LF",
"$filebin",
"--$boundary--$LF"
) -join $LF
$bodylenght = $bodylines.Length#$bodylines.lenght +$fileBin.Count
$bodylenght2=$fileBin.Count
$ConstBody = '245'
$bodylenght3=$bodylenght2+$ConstBody
$bodylenght2 | Out-File $Out -Append
#$bodyLines | Out-File $Out2 -Append
$bodylenght | Out-File $Out -Append
#$filebin | Out-File $Out -Append
$Headers = @{
"Content-Length"=$bodylenght#$bodylenght3
"Content-Type"="multipart/form-data; boundary=$boundary"
}
Invoke-WebRequest -Uri $uri -Headers $Headers -Method Post -ContentType "multipart/form-data; boundary=`"$boundary`"" -Body $bodyLines -TimeoutSec 600 #-OutFile $out
Но я не уверен правильно ли powershell рассчитывает длину.
Если считаю отдельно, например, для $bodyLines без $filebin и отдельно для $filebin, то получаю $bodyLines = 245 байт и $filebin= 28668103 байта. Итого 28668348 байта, что похоже на правду (размер файла 27,3 mb).
Но если считать сразу $bodyLines то получаем размер 103671435
$bodyLines = (
"--$boundary",
"Content-Disposition: form-data; name=`"@file`"; filename=`"$fileName`"",
"Content-Type: multipart/x-zip$LF",
"$filebin",
"--$boundary--$LF"
) -join $LF
$bodylenght = $bodylines.Length
Вопрос, как правильно посчитать количество байт в $bodyLines?