AsyncFileUpload 不会触发服务器端 UploadComplete
AsyncFileUpload does not fire server side UploadComplete
我在使用母版页的页面的更新面板内有一个 AsyncFileUpload 控件。
当我 select 一个文件时,客户端 OnClientUploadComplete 触发但不是服务器端。我搜索了这个问题并尝试了不同的建议,包括在更新面板外添加一个隐藏按钮,并在客户端脚本上添加 "click" 以强制异步回发,以及修改母版页上的 "form" 标签以包含加密类型但似乎没有任何效果。
在 aspx 文件中我有:
<script type="text/javascript">
function onClientUploadComplete(sender, e) {debugger
var ct = e.get_contentType();
var fn = e.get_fileName();
var l = e.get_length();
var p = e.get_path();
document.getElementById('uploadCompleteInfo').innerHTML = '';
__doPostBack('upnlNews', '');
}
function onClientUploadStart(sender, e) {
document.getElementById('uploadCompleteInfo').innerHTML = 'Please wait while uploading ' + e._fileName;
}
</script>
<asp:UpdatePanel runat="server" ID="upnlNews">
<ContentTemplate>
<ajaxToolkit:AsyncFileUpload runat="server" ID="fuAttchedDocs"
ThrobberID="myThrobber"
UploaderStyle="Traditional"
OnClientUploadComplete="onClientUploadComplete"
onuploadedcomplete="fuAttchedDocs_UploadedComplete"
onuploadedfileerror="fuAttchedDocs_UploadedFileError" />
<asp:Label runat="server" ID="myThrobber" Style="display: none;">
<img align="middle" alt="" src="../assets/images/6.gif" />
</asp:Label>
<div id="uploadCompleteInfo"></div><br />
</ContentTemplate>
</asp:UpdatePanel>
附加信息
当我在客户端脚本中放置断点并检查 Chrome Developer Tool 中的变量时,我看到以下内容:
function onClientUploadComplete(sender, e) {debugger
var ct = e.get_contentType(); ==> ct = ""
var fn = e.get_fileName(); ==> fn = "spock.jpg"
var l = e.get_length(); ==> l = "NaN"
var p = e.get_path(); ==> p = "C:\fakepath\spock.jpg"
document.getElementById('uploadCompleteInfo').innerHTML = '';
__doPostBack('upnlNews', '');
}
文件长度显示为 NaN 的事实有点可疑!
我发现 UI 设计者添加了搜索文本框和按钮组合,并将它们包含在
标签中;所以页面有两个
我在使用母版页的页面的更新面板内有一个 AsyncFileUpload 控件。 当我 select 一个文件时,客户端 OnClientUploadComplete 触发但不是服务器端。我搜索了这个问题并尝试了不同的建议,包括在更新面板外添加一个隐藏按钮,并在客户端脚本上添加 "click" 以强制异步回发,以及修改母版页上的 "form" 标签以包含加密类型但似乎没有任何效果。
在 aspx 文件中我有:
<script type="text/javascript">
function onClientUploadComplete(sender, e) {debugger
var ct = e.get_contentType();
var fn = e.get_fileName();
var l = e.get_length();
var p = e.get_path();
document.getElementById('uploadCompleteInfo').innerHTML = '';
__doPostBack('upnlNews', '');
}
function onClientUploadStart(sender, e) {
document.getElementById('uploadCompleteInfo').innerHTML = 'Please wait while uploading ' + e._fileName;
}
</script>
<asp:UpdatePanel runat="server" ID="upnlNews">
<ContentTemplate>
<ajaxToolkit:AsyncFileUpload runat="server" ID="fuAttchedDocs"
ThrobberID="myThrobber"
UploaderStyle="Traditional"
OnClientUploadComplete="onClientUploadComplete"
onuploadedcomplete="fuAttchedDocs_UploadedComplete"
onuploadedfileerror="fuAttchedDocs_UploadedFileError" />
<asp:Label runat="server" ID="myThrobber" Style="display: none;">
<img align="middle" alt="" src="../assets/images/6.gif" />
</asp:Label>
<div id="uploadCompleteInfo"></div><br />
</ContentTemplate>
</asp:UpdatePanel>
附加信息 当我在客户端脚本中放置断点并检查 Chrome Developer Tool 中的变量时,我看到以下内容:
function onClientUploadComplete(sender, e) {debugger
var ct = e.get_contentType(); ==> ct = ""
var fn = e.get_fileName(); ==> fn = "spock.jpg"
var l = e.get_length(); ==> l = "NaN"
var p = e.get_path(); ==> p = "C:\fakepath\spock.jpg"
document.getElementById('uploadCompleteInfo').innerHTML = '';
__doPostBack('upnlNews', '');
}
文件长度显示为 NaN 的事实有点可疑!
我发现 UI 设计者添加了搜索文本框和按钮组合,并将它们包含在
标签中;所以页面有两个