フォームポストを受け取るべき単純なC#ジェネリックハンドラをやっています。ここにフォームがあります...C#ジェネリックハンドラがポストからデータを取得しない
<form id="frmUploadImage" action="../Handlers/LocalImageUploadHandler.ashx" method="post" style="display: none">
<div>
<input style="display: none; margin-bottom: 20px" type="file" id="uploadImage" />
</div>
</form>
私は、ボタンをクリックすると入力のクリックイベントを呼び出すコードをいくつか持っています。入力がロードされると、以下が呼び出されます(ブレークポイントを設定することができます)。
var jqxhr = $.post('../Handlers/LocalImageUploadHandler.ashx', $('#frmUploadImage').serialize())
.success(function() {
alert('worked');
})
.error(function() {
alert('failed');
});
「失敗」のアラートが表示されます。サーバーサイドでは、ハンドラでこれを呼び出しています(ブレークポイントを設定して呼び出すことができます)。面白いのは何
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/octet-stream";
var file = Convert.FromBase64String(context.Request.Form["uploadedFile"]);
//other stuff
}
はcontext.Request.Formとcontext.Request.Files性質は、それらが送信されているにもかかわらず、その中には何もありませんということです。私がやったことは何も働いていません。私はXHR、jQueryなどで投稿しようとしました。DataUrlとしてファイルアップロードコントロールからデータを引き出し、base64でエンコードされた文字列にシリアル化してajax呼び出しに入れようとしました。ハンドラは投稿を受信しますが、データは削除されています。
ますinput要素に 'name'属性を与える必要があるかもしれません。 –