web-dev-qa-db-ja.com

選択が行われた後、アップロードのために送信する前のasp.netFileUploadイベント

FileUploadコントロールの[参照]ボタンで選択したファイルのサイズを表示したいと思います。

理想的には、この値は、ユーザーがファイルを選択した直後で、[ファイルのアップロード]ボタンがクリックされる前に表示されます。

私はウェブフォームを持っています。ボタンは次のようになります。

<asp:Button ID="UploadButton" runat="server" onclick="UploadButton_Click" Text="Upload File"/>         

ボタンコントロールのonclickイベントによりポストバックが発生し、ファイルがアップロードされます。

ファイルのサイズを取得する方法は知っていますが、[ファイルのアップロード]ボタンがクリックされてポストバックが発生する前ではありません。

ボタンをクリックせずにフォームを送信できる(つまり、ポストバック)FileUpload Webコントロールに関連付けられたイベントはありますか?

全体的な目的は、アップロードにかかる時間の感触をユーザーに提供したいということです... 10mbファイルと2kbファイルなどで異なる期待値を設定します)。

8
John Adams

問題は、ポストバックせずにクライアント側でファイルのサイズを確認する方法がないことです。 Ajaxを使用することもできますが、それはとにかく最初にファイルをアップロードすることを意味します。

これは、ある種のActiveXコントロールを使用してのみ実行できます。 Silverlight FileUploaderのようなものを使用することをお勧めします。これは、ポストバックする前にファイルのサイズを取得し、Niceもあるためです。進行状況インジケーター。

UPDATE:ユーザーが[参照]をクリックした後にポストバックまたはAjaxリクエストをトリガーする場合、クライアント側のイベントは「onchange」です。 onchangeイベントの使用方法の例を次に示します。

<asp:FileUpload runat="server" 
    onchange="alert('you selected the file: '+ this.value)" />

Onchangeを使用して、ajaxをトリガーして最初にファイルをアップロードしてから、ファイルのサイズを示すラベルを更新することができます。これの問題は、それが大きなファイルである場合、それが長い時間がかかることをユーザーに事前に知らせるという目的を損なうことです。

別の推奨事項は次のとおりです。アップロードする前にフラッシュを使用してファイルのサイズを決定するjQueryプラグインがあり、非常に使いやすいです。 jQuery Uploadifyでチェックしてください

14
Jose Basilio