MVC4 アプリケーション内で jquery ラッパーを使用して、fineuploader v3.9 UI を使用しています。この時点で、validation sizeLimit プロパティで設定されているように、2.5MB のファイルのみを許可する必要があると思います。現在の問題は、サポートされていないファイル タイプまたは大きすぎるファイルをアップロードすると、次のエラー ポップアップが表示されることです。
エラー ハンドラーが起動していないようで、サーバー側コード内のブレークポイントがヒットしません。そうは言っても、小さなファイルを選択すると、コントローラー メソッド コードのブレークポイントで停止し、すべて正常に動作します (アップロードの成功)。大きすぎるファイルやアップロードが許可されていないファイルで何が起こっているのかについての手がかりはありますか?
これが私のビューからのすべてのファインアップローダーjsコードです。「完了」と「送信済み」のイベントを処理しているため、アップロード中にボタンを正しく有効/無効にすることができ、これらは問題なく起動します。ただし、「エラー」ハンドラがどうなっているのかはわかりません。UI jQuery の方法で「qq」オブジェクト参照を使用できますか? 他の場所では使用されていないので、これは私の問題でしょうか? 考え?
// Uploader control setup
var fineuploader = $('#files-upload').fineUploader({
request:
{
endpoint: '@Url.Action("UploadFile", "Survey")',
customHeaders: { Accept: 'application/json' },
params: {
surveyInstanceId: (function () { return instance; }),
surveyItemResultId: (function () { return surveyItemResultId; }),
itemId: (function () { return itemId; }),
loopingIndex: (function () { return loopingCounter++; })
}
},
validation: {
acceptFiles: ['image/*','application/xls','application/pdf', 'text/csv', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/vnd.ms-excel'] ,
allowedExtensions: ['jpeg', 'jpg', 'gif', 'png', 'bmp', 'csv', 'xls', 'xlsx', 'pdf', 'xlt', 'xltx', 'txt'],
sizeLimit: 1024*1024*2.5, // 2.5MB
stopOnFirstInvalidFile: false
},
multiple: true,
text: {
//uploadButton: '<i class="icon-plus icon-white"></i>Select your upload file(s)'
uploadButton: 'Select your upload file(s)'
}
}).on('submitted', function(event, id, filename) {
alert('submitted ' + filename);
filesToUpload++;
$(':input[type=button], :input[type=submit], :input[type=reset]').attr('disabled', 'disabled');
}).on('complete', function(event, id, filename, responseJSON) {
alert('completed ' + filename);
uploadedFileCounter++;
if (filesToUpload == uploadedFileCounter)
{
$(':input[type=button], :input[type=submit], :input[type=reset]').removeAttr('disabled');
}
}).on('error', function(event,id, name, errorReason, xhr) {
alert(qq.format("Error on file number {} - {}. Reason: {}", id, name, errorReason));
});
});
アップロード中にヒットしたサーバーメソッドのシェルは次のとおりです。
[HttpPost]
public JsonResult UploadFile(HttpPostedFileWrapper qqfile, int surveyInstanceId, int surveyItemResultId, int itemId, int loopingIndex)
{
try
{
bool isValid = false;
// MORE UPLOAD CODE
if (isSaveValid && isResultItemEntryValid)
isValid = true;
return CreateJsonResult(isValid);
}
}
そして、JSON 成功メッセージを返す私のメソッド
private JsonResult CreateJsonResult(bool isSuccess)
{
var json = new JsonResult();
json.ContentType = "text/plain";
json.Data = new { success = isSuccess };
return json;
}
これはすべて、FireFox v24 および Chrome v30 では正しく機能しますが、IE 9 では、デバッグ コンソール内で次のように表示されます。
IE では、送信済みイベントと完了イベントが発生しますが、アップロードは失敗します。他のブラウザでは、正しい最大サイズ超過エラーが表示され、イベントは発生しません。