2016-12-20 10 views
0

this answerのようなものを利用して、Invoke-RestMethodを使用していくつかの変数とファイルのリストをコントローラにポストすることを試みています。しかし、AFAICT私は正しくpowershellのビットを適応させたが、MVCコントローラはそれを好まない。MVCコントローラがInvoke-RestMethodでポストされたデータを受け取りません

ここにレプロがあります。新鮮な、新しいMVC 5アプリケーションでは、私は、ホームコントローラにこのメソッドを追加しました:

[HttpPost] 
public ActionResult Upload(string description, HttpPostedFileBase[] files) 
{ 
    if (string.IsNullOrWhiteSpace(description)) return Content("Description is required"); 
    if (files == null || !files.Any()) return Content("At least one file required"); 
    return Content("Dummy success."); 
} 

私はこのようにそれに話をしてみてください:前述のリミックスです

$baseUri = "http://localhost:62441" 

$body = @{ 
    "description" = "Test upload." 
    "files" = Get-Content("MyStuff.dll") -Raw 
} 

Invoke-RestMethod ` 
    -Method Post ` 
    -Uri "$baseUri/home/upload" ` 
    -Body $body ` 
    -ContentType "multipart/form-data" 

# Outputs "Description is required" 

(その他様々な回答)。しかし、私がスクリプトを実行すると、MVC側が空のdescriptionと空のファイルリストを取得します。

これを引き起こしているMVCアクションがありますか?このコードを調整するにはどうすればいいですか(好ましくはpowershellビット)。

PS。私はthis answerのボディをカスタムビルドする方法を説明していますが、それは避けることが大好きです。最初に述べた回答から、実際には可能であると思われます。

答えて

0

私は、競合答えと誰も歓迎しますが、その瞬間まで、私は、これは、プレーンInvoke-RestMethodコマンドレットでない(簡単に)ことが可能であることを主張するだろう、少なくともないマルチパートを構築別の関数でラップなし形。そのコマンドレットを使用しているとき

これは基本的にmy answer to the question I mentioned aboveを使用することを意味、あなたはちょうどこのようにそれを呼び出すことができます。

$url ="http://localhost:62441/home/upload" 
$form = @{ description = "Test upload." } 
Get-ChildItem .\MyStuff.dll | Send-MultiPartFormToApi $url $form 
関連する問題