Blueintjquery.fileuploadプラグインを使用してasp.netを使用してファイルをアップロードしています
ユーザーがカテゴリ(dropdownlistbox)、タイトル(アップロードされたファイルの場合、TextBox)、およびファイル入力(プラグインによって処理される)を選択できるページがある状況があります。
プラグイン: https://github.com/i-e-b/jQueryFileUpload.Net
javascript/jquery:
$('#fileup').fileupload({
replaceFileInput: false,
formData: function (form) {
return [{ name: 'dcat', value: $('#ddlCats').val() }, { name: 'title', value: $('#txtTitle').val()}];
},
dataType: 'json',
url: '/_handlers/FileHandler.ashx',
add: function (e, data) {
var valid = true;
var re = /^.+\.((doc)|(xls)|(xlsx)|(docx)|(pdf)|(pts))$/i;
$.each(data.files, function (index, file) {
if (!re.test(file.name)) {
$('#uploaded').html('This file type is not supported');
valid = false;
}
});
if (valid)
data.submit();
},
done: function (e, data) {
$.each(data.result, function (index, file) {
$('#uploaded').html(file);
});
GetFiles($('#ddlCats').val())
},
error: function () {
alert('An error occured while uploading the document.');
}
});
html:
<div id="fUpload">
<span style="font-weight:bold;">Yeni Belge:</span><br />
<table class="ktoeos">
<tr>
<td>Category:</td>
<td> <select id="ddlCats"></select></td>
</tr>
<tr>
<td>Document Description:</td>
<td><input type="text" id="txtTitle" /></td>
</tr>
<tr>
<td>Select Document:</td>
<td><input type="file" name="file" id="fileup" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" id="btnSubmit" value="Upload" /></td>
</tr>
</table>
<div id="uploaded"></div>
私の問題は、ファイルを選択した直後にファイルが(httpハンドラーを介して)アップロードされることです。他のフォームデータを一緒に送信するために処理できますが、検証を実行する必要があるため、送信ボタンでこのイベントを発生させたいと思います。また、ユーザーは最初にファイルを選択してからフォームの他の部分に入力することもできますが、この場合、フォームが送信される前に送信されるため、入力できません。
私はあまり優れたJavaScriptプログラマーではないので、この機能がプラグインで利用可能な.jsファイルですでに利用可能かどうか(おそらく利用可能かどうか)はわかりません。私が変更または実行する必要があるアイデアはありますか?
add
コールバックは、ファイルがウィジェットに追加されるとすぐに呼び出されるため、アップロードを一時停止してからボタンクリックで開始するには、オーバーライドする必要があります。
add: function (e, data) {
$("#btnSubmit").click(function () {
// validate file...
if(valid)
data.submit();
});
}
更新:ドキュメントには より良い例 があります:
" autoUpload: true"
にデフォルトとして設定されているオプションjquery.fileupload-ui.js
があるため、これは非常に簡単です。
これをfalse
に変更し、Clickイベントボタンを手動でコーディングできる場合。