私のMVCアプリでは、コードのこの部分でAjaxアップロード(バージョン3.5(23.06.2009))を使用しています:
<div id="userPhotosUpload">
<span class="tabs_fieldDesc">@Html.Label("txtPhotoDescription", "Desc")</span>
@Html.TextBox("txtPhotoDescription", "", new { @maxlength = "30", @class = "tabs_fullLength" })
<div class="buttonLine">
<button id="btnAddUserPhoto">Add picture</button>
</div>
<input id="txtSelectedPhotoFolderId" type="hidden" value="" />
</div>
<script type="text/javascript">
$(document).ready(function () {
//photo upload
var photoUpload = new AjaxUpload($('#btnAddUserPhoto'), {
action: '/Profile/ProcessPhoto',
name: 'uploadfile',
responseType: 'json',
autoSubmit: true,
onSubmit: function (file, ext) {
showProgressBar();
photoUpload.setData({
photoDescription: $('#txtPhotoDescription').val(),
idPhotoFolder: $('#txtSelectedPhotoFolderId').val()
});
},
onComplete: function (file, response) {
hideProgressBar();
$('#txtPhotoDescription').val('');
var currentSelectedFolderId = getSelectedFolder();
LoadPhotoFolders();
SelectPhotoFolder(currentSelectedFolderId);
}
});
</script>
1MB より大きいファイルをアップロードする場合、AjaxUpload はコントローラーでメソッドを呼び出さない:
[Authorize]
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public JsonResult ProcessPhoto(string photoDescription, Int64 idPhotoFolder)
{
//process request with file
}
とFiddler2はこれを見せてくれます:
POST /Profile/AddUserPhoto HTTP/1.1 ホスト: localhost:55538 ユーザーエージェント: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0 Accept: text/html,application/xhtml+xml,application /xml;q=0.9, /;q=0.8 Accept-Language: cs,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate 接続: キープアライブ リファラー: Cookie: AspxAutoDetectCookieSupport=1; .ASPXAUTH=AB45C67E90AD19402C47818CC4BC78504C96F6BB063E07F89E918F22D3A42B441B14B57818448BAAD3ABEEED48C1EA41431C89F149B3BA53D59950694F33C447462EE56AC33CFB54F1ADAC7B7A4F5D69F6ED3855A649F217EDC56B2250E6BFC87052C0640C1C191F212A76B3A9D9973609F6E537992BBADBC1A3F97853A8B90485DE9C11819D54D1F0D0F9838EDAE73E; ASP.NET_SessionId=gflyfmea2ty2gm3i4rea2adx Content-Type: multipart/form-data; 境界 = ---------------------------481414423196 コンテンツの長さ: 6046387
-----------------------------481414423196 Content-Disposition: フォームデータ。名前="写真の説明"
-----------------------------481414423196 Content-Disposition: フォームデータ。name="idPhotoFolder"
136 -----------------------------481414423196 満足している気質: フォームデータ; name="アップロードファイル"; filename="sam_1103.jpg" コンテンツ タイプ: image/jpeg
HTTP/1.1 504 Fiddler - 受信失敗 Content-Type: text/html; charset=UTF-8 接続: 閉じる タイムスタンプ: 15:30:34.321
[Fiddler] ReadResponse() が失敗しました: サーバーはこの要求に対する応答を返しませんでした。
どこに問題があるのでしょうか?
ありがとう