根据Microsoft,FileUpload控件与AJAX UpdatePanel不兼容。
我知道可以将PostBackTrigger添加到表单的提交按钮,如下所示:
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
问题在于,这会强制表单执行完整的回发,从而避免了首先使用UpdatePanel的整个过程。是否有解决此问题的方法不会导致整个页面刷新?
答案 0 :(得分:8)
我知道可以做到这一点的第三方组件。它被称为"swfupload",可以免费使用和开源,并使用javascript和flash来实现魔力。
这是他们提供的功能列表: (来自他们的网站)
- 通过对话框中的ctrl / shift-selection一次上传多个文件
- 所有活动的Javascript回调
- 上传开始前获取文件信息
- 使用XHTML和css
设置上传元素- 使用HTML
上传文件时显示信息- 无需重新加载页面
- 适用于所有支持Flash的平台/浏览器。
- 如果是Flash或javascript,则优雅地降级到普通的HTML上传表单 不可用
- 上传开始前控制文件大小
- 仅在对话框中显示所选的文件类型
- 队列上传,在开始上传之前删除/添加文件
他们还有一个demo area,您可以在其中进行控制。这样你就可以确保它正是你想要的。
我们在其中一个项目中使用过它,到目前为止我们从未失败过,所以我认为这是一个安全的选择。
哦,这是下载页面:http://code.google.com/p/swfupload/
答案 1 :(得分:3)
仅通过重新加载整个AJAX
文档,您无法通过HTML
上传文件。如果您更喜欢纯HTML(这种情况比较常见,例如WordPress使用)或其他类似Sven建议的swfupload,您应该使用iframe
。
答案 2 :(得分:3)
将此添加到按钮控件:
OnClientClick="javascript:document.forms[0].encoding = 'multipart/form-data';"
- 或 -
使您的页面表单标记看起来像:
<form id="form1" runat="server" enctype="multipart/form-data">
答案 3 :(得分:1)
有一天,当我遇到同样的问题时,我发现了这一点:http://vinayakshrestha.wordpress.com/2007/03/13/uploading-files-using-aspnet-ajax-extensions/。
对于我的实现,我将iframe放在一个模态弹出窗口中,并添加了一个style =“display:none”的按钮来处理弹出窗口的关闭。在监视iframe中的更改的javascript函数中,我添加了document.getElementById(“&lt;%= btnCloseUpload.ClientID%&gt;”)。click();隐藏按钮。
答案 4 :(得分:1)
尝试使用AJAX AsyncFileUpload。如果在要使用的事项中使用它(处理UploadedComplete事件),它可以很好地工作。
http://www.asp.net/AJAX/AjaxControlToolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx
答案 5 :(得分:0)
可以使用IFrame具有提到FileUpload页面的“target”属性或在链接上使用Jquery示例 How to make Asynchronous(AJAX) File Upload using iframe?
答案 6 :(得分:-1)
触发上传事件的按钮需要将UseSubmitBehavior
属性设置为false:
clsUploadButton.UseSubmitBehavior = False;