Hallo zusammen,
ich versuche mittels Powershell ein Request-Anfrage mit multipart/form zu versenden.
Laut API-Dokumentation soll die Anfrage aus einem Request-Teil in JSOn und dem File bestehen.
Leider erhalte ich immer die Fehlermeldung "Invalid Multipart/form request" und habe leider keine Idee, wo mein Fehler liegt.
Eine Query-Anfrage nur mit JSON funktioniert.
Laut Doku soll die Upload-Anfrage wie folgt aussehen:
----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Dis-data; name="request"; Content-Type: application/json {
"request": {
"md5": "da855ff838250f45d528a5a05692f14e",
"file_name": "MyFile.docx",
"file_type": "docx",
"features": ["te"],
"te": {
"reports": ["pdf", "xml"],
"images": [
{
"id": "7e6fe36e-889e-4c25-8704-56378f0830df",
"revision": 1
},
{
"id": "e50e99f3-5963-4573-af9e-e3f4750b55e2",
"revision": 1
}
]
}
}
}----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Dis-data; name="file"; filename="MyFile.docx" Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
[Binary content of MyFile.docx] ----WebKitFormBoundary7MA4YWxkTrZu0gW
Das ist mein Code dazu:
$url = "https://foobar/tecloud/api/v1/file/upload"
$boundary = [System.Guid]::NewGuid().ToString()
$filePath="C:\tmp\test.txt"
$file = Get-Item -path $filePath
$mimeType = [System.Web.MimeMapping]::GetMimeMapping($file.Name)
$fileBin = [System.IO.File]::ReadAllBytes($filePath)
#$CODEPAGE = "iso-8859-1"
#$enc = [System.Text.Encoding]::GetEncoding($CODEPAGE)
#$fileEnc = $enc.GetString($fileBin)
$LF = "`r"
$messageBody = @{
request = @{
file_name = $file.Name
file_type = "sql"
}
}
$bodyLines = (
"----WebKitFormBoundary$boundary",
'Content-Dis-data; name="request";',
'Content-Type: application/json',
(ConvertTo-Json $messageBody)+$LF,
"----WebKitFormBoundary$boundary",
'Content-Dis-data; name="file"; filename="test.txt"',
"Content-Type: $mimeType"+$LF,
$fileBin+$LF,
"----WebKitFormBoundary$boundary"
)
$Response=Invoke-Restmethod -Uri $url -Method Post -ContentType "multipart/form-data; boundary=$boundary" -Body $bodyLines -verbose