クライアント側からファイルをアップロードするためのより実用的な方法を見つけるために詳細な調査を行った結果、入力タイプのファイル html 要素を使用することにしました。
問題は次のとおりです。コントローラーに何も表示されず、firebug に設定された偽のパス文字列でさえ見ることができません。
意見:
<form action="action" id="id" method="POST" enctype="multipart/form-data">
<table id="tblId">
<tr>
<td><input type="file" name="file" /></td>
</tr>
</table>
<input type="submit" value="import" />
</form>
ご覧のとおり、enctype を適切に使用しています。データがないことを除いて、データはコントローラーに送信されます。
コントローラ:
[HttpPost]
public ActionResult opImportFile(FormCollection form) {
var file = Request.Files["file"];
if (file != null)
{
return Content("ok");
}
else
{
return Content("bad");
}
}
そして、私はいつも「悪く」なっています!残念な。私が試すことができる他の方法はありますか、それとも何か間違っていますか?
PS -> ajax リクエストです:
$('#formUpdStoringSettings').submit(function (e) {
e.preventDefault();
var form = $(this);
alert($('input[name=file]').val()); //Here I am able to get the fakepath...
alert(form.serialize()); //Here I get nothing...
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
success: function (response) {
}
});
}