我想显示通过 FileUpload 控件的浏览按钮选择的文件的大小。
理想情况下,该值在用户选择文件后但在单击“上传文件”按钮之前立即显示。
我有一个网络表单。该按钮如下所示:
<asp:Button ID="UploadButton" runat="server" onclick="UploadButton_Click" Text="Upload File"/>
按钮控件的 onclick 事件会导致回发并上传文件。
我知道如何获取文件的大小,但不知道如何在单击“上传文件”按钮并发生回发之前获取文件的大小。
是否存在与 FileUpload Web 控件关联的事件,无需单击按钮即可提交表单(即回发)?
整个意图是我想让用户感受到上传可能需要多长时间...为 10mb 文件设置与 2kb 文件不同的期望,等等)。
最佳答案
问题是客户端无法在不回发的情况下找出文件的大小。您可以使用 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
关于做出选择之后、提交上传之前的 asp.net FileUpload 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830899/