19

根据Microsoft的说法,FileUpload 控件与 AJAX UpdatePanel 不兼容。

我知道可以将 PostBackTrigger 添加到表单的提交按钮中,如下所示:

<Triggers>
  <asp:PostBackTrigger ControlID="Button1" />
</Triggers>

问题是这会强制表单执行完整的回发,这首先会消除使用 UpdatePanel 的全部意义。是否有解决此问题的方法不会导致整个页面刷新?

4

7 回答 7

8

我知道可以做到这一点的第三方组件。它被称为swfupload,可以免费使用和开源,并使用 javascript 和 flash 来创造奇迹。

这是他们提供的功能列表:(来自他们的网站)

  • 在对话框中通过 ctrl/shift-selecting 一次上传多个文件
  • 所有事件的 Javascript 回调
  • 在上传开始前获取文件信息
  • 使用 XHTML 和 css 样式上传元素
  • 使用 HTML 上传文件时显示信息
  • 无需重新加载页面
  • 适用于所有支持 Flash 的平台/浏览器。
  • 如果 Flash 或 javascript 不可用,则优雅地降级为正常的 HTML 上传表单
  • 在上传开始之前控制文件大小
  • 仅在对话框中显示选择的文件类型
  • 排队上传,在开始上传之前删除/添加文件

他们还有一个演示区,您可以在其中玩弄他们的控制。这样你就可以确保它正是你想要的。

我们在我们的一个项目中使用了它,到目前为止它从未让我们失望过,所以我认为这是一个安全的选择。

哦,这里是下载页面:http ://code.google.com/p/swfupload/

于 2008-08-30T07:16:36.717 回答
3

您不能AJAX仅通过重新加载整个HTML文档来上传文件。iframe如果您更喜欢纯 HTML(这更常见,例如 WordPress 使用),您应该使用s 或 Sven 建议的其他类似 swfupload 的东西。

于 2008-08-31T13:49:08.760 回答
2

将此添加到您的按钮控件:

OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';"

-或者-

使您的页面表单标签看起来像:

<form id="form1" runat="server" enctype="multipart/form-data">
于 2008-10-20T07:30:10.253 回答
1

前几天我遇到同样的问题时发现了这个:http: //vinayakshrestha.wordpress.com/2007/03/13/uploading-files-using-aspnet-ajax-extensions/

对于我的实现,我将 iframe 放在模式弹出窗口中,并添加了一个带有 style="display:none" 的按钮来处理弹出窗口的关闭。在监视 iframe 变化的 javascript 函数中,我添加了 document.getElementById("<%=btnCloseUpload.C​​lientID%>").click(); 对于隐藏按钮。

于 2008-09-16T17:38:30.477 回答
1

试试 AJAX AsyncFileUpload。如果用于它打算使用的事情(处理 UploadedComplete 事件),它会很好地工作。

http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx

于 2010-02-08T15:55:13.923 回答
0

可以使用 IFrame 具有提到 FileUpload 页面的“目标”属性,或者在链接中使用 Jquery 示例 如何使用 iframe 进行异步(AJAX)文件上传?

于 2013-09-10T10:26:27.573 回答
-1

触发上传事件的按钮需要将UseSubmitBehavior属性设置为 false:

clsUploadButton.UseSubmitBehavior = False;
于 2012-03-02T17:14:37.873 回答