Comment envoyer multipart/form-data avec PowerShell Invoke-RestMethod
Je suis en train d'envoyer un fichier via Invoke-RestMethod dans un contexte similaire comme curl avec le commutateur-F.
Curl Exemple
curl -F FileName=@"/path-to-file.name" "https://uri-to-post"
Dans powershell, j'ai essayé quelque chose comme ceci:
$uri = "https://uri-to-post"
$contentType = "multipart/form-data"
$body = @{
"FileName" = Get-Content($filePath) -Raw
}
Invoke-WebRequest -Uri $uri -Method Post -ContentType $contentType -Body $body
}
Si je vérifie le violoneux, je vois que le corps contient les données binaires brutes, mais je reçois une réponse 200 dos, ne montrant pas de charge utile a été envoyé.
J'ai aussi essayé d'utiliser l'-InFile paramètre avec pas de chance.
J'ai vu un certain nombre d'exemples à l'aide d'un .net de la classe, mais a été d'essayer de garder cela simple avec la nouvelle Powershell 3 commandes.
Quelqu'un aurait-il des conseils ou de l'expérience dans la fabrication de ce travail?
A u essayé ce -stackoverflow.com/questions/12251965/...
Des messages ne sont pas pris en charge. Vous pouvez définir le type de contenu à être quoi que ce soit, mais la mise à
Multipart/form-data fonctionne lors de l'ajout d'un type de contenu. Le problème que j'ai eu ici est l'API nécessaire certains paramètres pour accepter le contenu brut, puis j'ai été en mesure d'utiliser -InFile \chemin\vers\fichier et le charger à l'aide d'Invoquer-RestMethod
Des messages ne sont pas pris en charge. Vous pouvez définir le type de contenu à être quoi que ce soit, mais la mise à
multipart/form-data
ne cause pas le message de la forme multipart.Multipart/form-data fonctionne lors de l'ajout d'un type de contenu. Le problème que j'ai eu ici est l'API nécessaire certains paramètres pour accepter le contenu brut, puis j'ai été en mesure d'utiliser -InFile \chemin\vers\fichier et le charger à l'aide d'Invoquer-RestMethod
OriginalL'auteur Jeff | 2014-03-18
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que l'API requis de quelques paramètres supplémentaires. Demande initiale requise certains paramètres pour accepter le contenu brut et de spécifier le nom de fichier/taille. Après réglage et de revenir lien pour soumettre, j'ai pu utiliser:
Dépend vraiment, avez-vous lu api.sharefile.com/rest/docs/resource.aspx?name=Items Vous pouvez essayer quelque chose comme ceci: sf/v3/Items($parentFolderId)/Upload?method=standard&raw=true&fileName=$fileName&fileSize=$fileSize Évidemment en remplaçant les variables avec vos données
La question que je me pose est est ce spécifique à l'API que vous étiez en train d'utiliser ou serait-ce une obligation générale pour les uploads de fichier en plusieurs parties à l'aide de messages? JIRA documentation de l'API seulement les listes un exemple avec curl (et mentionne certaines exigences de l'en-tête), n'ayant pas d'autres paramètres post.
Ce n'est pas de créer le multipart format de corps, le corps n'aura pas le
boundary=------------------------abcdefg1234
pièces de séparer le contenu. Voir stackoverflow.com/q/25075010/516748OriginalL'auteur Jeff
Accepté la réponse ne fera pas un
multipart/form-data
demande, mais plutôt unapplication/x-www-form-urlencoded
demande forcer laContent-Type
en-tête à une valeur que le corps ne contient pas.Un moyen d'envoyer un
multipart/form-data
formaté demande avec PowerShell est:OriginalL'auteur David
J'ai trouvé ce post et changé un peu
OriginalL'auteur kogoia