Tenemos la contestación a esta incógnita, o por lo menos eso pensamos. Si tienes preguntas déjanoslo saber en un comentario, para nosotros será un placer responderte
Solución:
La respuesta aceptada no hará un multipart/form-data
petición, sino más bien una application/x-www-form-urlencoded
solicitud de obligar a la Content-Type
encabezado a un valor que el cuerpo no contiene.
Una forma de enviar un multipart/form-data
solicitud formateada con PowerShell es:
$ErrorActionPreference = 'Stop'
$fieldName = 'file'
$filePath = 'C:Temptest.pdf'
$url = 'http://posttestserver.com/post.php'
Try
Add-Type -AssemblyName 'System.Net.Http'
$client = New-Object System.Net.Http.HttpClient
$content = New-Object System.Net.Http.MultipartFormDataContent
$fileStream = [System.IO.File]::OpenRead($filePath)
$fileName = [System.IO.Path]::GetFileName($filePath)
$fileContent = New-Object System.Net.Http.StreamContent($fileStream)
$content.Add($fileContent, $fieldName, $fileName)
$result = $client.PostAsync($url, $content).Result
$result.EnsureSuccessStatusCode()
Catch
Write-Error $_
exit 1
Finally
if ($client -ne $null) $client.Dispose()
if ($content -ne $null) $content.Dispose()
if ($fileStream -ne $null) $fileStream.Dispose()
if ($fileContent -ne $null) $fileContent.Dispose()
El problema aquí era que la API requería algunos parámetros adicionales. La solicitud inicial requería algunos parámetros para aceptar contenido sin procesar y especificar el nombre/tamaño del archivo. Después de configurar eso y recuperar el enlace adecuado para enviar, pude usar:
Invoke-RestMethod -Uri $uri -Method Post -InFile $filePath -ContentType "multipart/form-data"
Encontré este post y lo cambié un poco.
$fileName = "..."
$uri = "..."
$currentPath = Convert-Path .
$filePath="$currentPath$fileName"
$fileBin = [System.IO.File]::ReadAlltext($filePath)
$boundary = [System.Guid]::NewGuid().ToString()
$LF = "`r`n"
$bodyLines = (
"--$boundary",
"Content-Disposition: form-data; name=`"file`"; filename=`"$fileName`"",
"Content-Type: application/octet-stream$LF",
$fileBin,
"--$boundary--$LF"
) -join $LF
Invoke-RestMethod -Uri $uri -Method Post -ContentType "multipart/form-data; boundary=`"$boundary`"" -Body $bodyLines
Sección de Reseñas y Valoraciones
Si eres capaz, tienes el poder dejar un enunciado acerca de qué le añadirías a este escrito.