我想显示通过FileUpload控件的Browse按钮选择的文件的大小.
理想情况下,此值会在用户选择文件后立即显示,但在单击“上载文件”按钮之前.
我有一个网络形式. Button看起来像这样:
<asp:Button ID="UploadButton" runat="server" onclick="UploadButton_Click" Text="Upload File"/>
按钮控件的onclick事件会导致回发并上载文件.
我知道如何获取文件的大小,但不是在单击“上载文件”按钮并发生回发之前.
是否有与FileUpload Web控件关联的事件可以提交表单(即回发)而无需单击按钮?
解决方法
问题是,如果没有回发,就无法找到客户端文件的大小.您可以使用Ajax,但这意味着首先要上传文件.
这只能使用某种ActiveX控件来完成.我建议使用类似于Silverlight FileUploader的东西,因为它在回发之前获得了文件的大小,甚至有一个很好的进度指示器.
更新:如果要在用户单击浏览后触发回发或Ajax请求,则客户端事件为“onchange”.这是一个如何使用onchange事件的示例.
<asp:FileUpload runat="server" onchange="alert('you selected the file: '+ this.value)" />
您可以使用onchange,触发ajax以首先上载文件,然后更新显示文件大小的标签.这样做的问题在于,如果它是一个大文件,它的目的是让用户知道它需要很长时间.
这是另一个建议:有一个jQuery插件,在上传之前使用flash来确定文件的大小,它非常容易使用.请在jQuery Uploadify查看