选择完成后和提交上传之前的asp.net FileUpload事件

Joh*_*ams 8 asp.net file-upload

我想显示通过FileUpload控件的Browse按钮选择的文件的大小.

理想情况下,此值会在用户选择文件后立即显示,但在单击"上载文件"按钮之前.

我有一个网络形式.Button看起来像这样:

<asp:Button ID="UploadButton" runat="server" onclick="UploadButton_Click" Text="Upload File"/>         
Run Code Online (Sandbox Code Playgroud)

按钮控件的onclick事件导致回发并上载文件.

我知道如何在单击"上载文件"按钮并发生回发之前获取文件的大小.

是否有与FileUpload Web控件关联的事件可以提交表单(即回发)而无需单击按钮?

整个意图是我想让用户感觉上传可能需要多长时间...为10mb文件设置不同于2kb文件的预期,等等.

Jos*_*lio 14

问题是,如果没有回发,就无法找到客户端文件的大小.您可以使用Ajax,但这意味着首先要上传文件.

这只能使用某种ActiveX控件来完成.我建议使用类似Silverlight FileUploader的东西,因为它在回发之前获得文件的大小,甚至有一个很好的进度指示器.

更新:如果要在用户单击浏览后触发回发或Ajax请求,则客户端事件为"onchange".这是一个如何使用onchange事件的示例.

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

您可以使用onchange,触发ajax以首先上载文件,然后更新显示文件大小的标签.这样做的问题在于,如果它是一个大文件,它就会让用户事先知道这需要很长时间.

这是另一个建议:有一个jQuery插件,在上传之前使用flash来确定文件的大小,它非常容易使用.在jQuery Uploadify上查看

  • 谢谢何塞.我想出了一些接近这个的东西:<script type ="text/javascript"> function submitform(){document.form1.submit(); } </ script> <asp:FileUpload ID ="FileUpload1"runat ="server"Width ="848px"onchange ="submitform()"/>然后这适用于Page_Load if(Page.IsPostBack)lblFileSize.Text = GetFileSize (FileUpload1.PostedFile.ContentLength); (2认同)