非常に単純なビューがあり、ユーザにJSON
ファイルを選択して解析させます。ここでJSONファイルを解析するためにファイルパスをコントローラに返す方法
がビューから該当するコードである...ここで
@using (Html.BeginForm("AddSampleDataJSON", "Event"))
{
<input type="file" name="GetJSONFile" /><br>
<input type="submit" />
}
は、コントローラからの方法である:
[HttpPost]
public ActionResult AddSampleDataJSON(FormCollection form)
{
string path = ??
using (StreamReader r = new StreamReader(path))
{
string json = r.ReadToEnd();
List<Event> events =
JsonConvert.DeserializeObject<List<Event>>(json);
}
return View();
}
質問は、私は完全なパスにアクセスするので、私はどうすればよいです最終的にJSON
を解析するためにStreamReader
に送信することができます。 FormCollection
オブジェクトには表示されません。
セキュリティ上の理由からブラウザはファイル名のみを送信し、使用ファイルシステムは公開しません。パラメータは 'HttpPostedFileBase GetJSONFile'でなければならず、ファイルの内容が読み込まれます。そして、フォームタグ –
に 'enctype =" multipart/form-data "属性を設定する必要があります。私はその属性を追加した後でもnullになります。そして私が選んでいるファイルは、実際にはJSONファイルです。 – user1327418
それから正しく設定しなかった。 (それはどんなタイプのファイルでも違いはありません) –