做出选择之后、提交上传之前的 asp.net FileUpload 事件

标签 asp.net file-upload

我想显示通过 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/

相关文章:

asp.net - 在 ASP.NET 中自定义 CSS 类

flutter - 如何在 Flutter 中将图像和文件上传到服务器?

file-upload - 使用 Rails 4、强参数和 Carrierwave 上传文件

asp.net - 使用什么代替 Azure Web Apps 来允许在应用程序环境中安装 google chrome?

c# - 比较两个字符串后需要显示更改的文本

html - Webkit 输入文件,隐藏转换标签 : translateX

php - 为什么我无法在亚马逊 EC2 服务器上使用 php 上传超过 3 MB 的文件?

php - 保护文件上传

c# - ASP.NET 配置文件保存被旧值覆盖

c# - ASP.NET MVC 5 Bootstrap Accordion 无法正常工作