.net の AsyncFileUpload コントロールに関して、ファイルを選択すると、コントロールはファイルのアップロードを実行します。私の懸念は、ファイルを選択したらアップロードを無効にして、送信ボタンで非同期にアップロードを処理できるようにすることです。
3 に答える
私はこれが古いことを知っていますが、私はこれにしばらく頭を悩ませました。
最初に考えたのは、コントロールの下のファイル入力を無効にすることでした。
コントロールを無効にすることはできましたが、残念ながら機能しなくなりました。サーバーが AsyncFileUpload_UploadComplete を起動すると、入力が無効になり、読み取るファイルがありませんでした。
<script>
function disableFileUpload(on) {
if (on) {
$('#ajax-file-input input:file').attr('disabled', true);
} else {
$(#ajax-file-input 'input:file').attr('disabled', false);
}
}
function AsyncFileUpload_CheckExtension(sender, args) {
disableFileUpload(true);
return true;
}
function AsyncFileUpload_OnClientUploadComplete(sender, args) {
disableFileUpload(false);
var data = eval('(' + args.d + ')');
for (var key in data) {
var obj = data[key];
for (var prop in obj) {
console.log(prop + " = " + obj[prop]);
}
}
doThingsWith(data);
}
</script>
<div id="ajax-file-input">
<ajaxToolkit:AsyncFileUpload ID="AsyncFileUpload1"
OnUploadedComplete="AsyncFileUpload_UploadComplete"
OnClientUploadStarted="AsyncFileUpload_CheckExtension"
OnClientUploadComplete="AsyncFileUpload_OnClientUploadComplete"
runat="server" />
</div>
コントロールの上に半透明のpngを配置し、それを表示および非表示にして、コントロールにアクセスできないようにしました。
お役に立てれば。
function disableFileUpload(on) {
if (on) {
$("#file-disabled").show();
} else {
$("#file-disabled").hide();
}
}
簡単な答えはいいえです。私はそれらと同じような asyncupload の問題を抱えていました。私のアドバイスは、アップロードをボタンで制御したり、選択したファイルを追加および削除したり (おそらく後で必要になるでしょう)、JavaScript 操作を使用したりする必要がある場合は、彼から離れることです。
SWFUpload を検索してください。これは、.NET と簡単に統合できるフラッシュ コンポーネントです。複数の JavaScript オプションとイベントを提供します。:D
次のリンクを確認してください。
私の知る限り、によって公開される唯一AsyncFileUpload
のイベントはUploadComplete
イベントとUploadError
. アップロードを手動で開始する機能を具体的に公開するイベントはありません。おそらく JavaScript の何らかのトリックでそれが可能になるかもしれませんが、私はこれまでそのような回避策を見たことがありません。