作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要求
我正在尝试上传文件,只要用户选择它。我必须满足以下要求:
onchange
)事件进行完整回发。 <asp:UpdatePanel ID="upData" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div style="width: auto; float: right;">
<asp:Button ID="btnFileImportSkin" CssClass="ButtonSkin AddButton" Text="Import" Style="position: absolute; z-index: 2;" runat="server" OnClientClick="Javascript:onImport(); return false;" />
<asp:FileUpload ID="fileImport" Visible="false" Style="position:relative; opacity:0;" runat="server" onchange="Javascript:onFileSelected();" />
<%-- onchange="Javascript:this.form.submit();" /> --%>
<%-- <asp:Button ID="btnUpload" runat="server" OnClientClick="Javascript:alert('Uploading...'); __doPostBack('<%= btnUpload.ID %>', ''); return false;" /> --%>
<asp:Button ID="btnUpload" OnClick="btnUpload_Click" runat="server" />
</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
</asp:UpdatePanel>
<script type="text/javascript">
function onImport() {
var fileImportClientId = '<%= fileImport.ClientID %>';
document.getElementById(fileImportClientId).click();
}
function onFileSelected() {
alert("File Selected");
// I have tried calling the function directly and with a timeout
setTimeout(onUpload, 20);
}
function onUpload() {
var btnUploadClientId = '<%= btnUpload.ClientID %>';
document.getElementById(btnUploadClientId).click();
}
</script>
protected void btnUpload_Click(object sender, EventArgs e)
{
// PostedFile is null first time code gets here on user selecting a file
if (fileImport.PostedFile != null)
{
if (fileImport.PostedFile.FileName.Length > 0)
{
ImportFromFile();
}
}
}
btnFileImportSkin
按钮。 onImport
被调用,它以编程方式点击 fileimport
按钮。 onFileSelected
叫做。 onUpload
被成功调用。 btnUpload_Click
每次都调用成功。 btnUpload
的 OnClientClick 事件中的 __doPostBack() FileUpload
的 this.form.submit() onchange 事件控制。 FileUpload
的 onchange 属性Page_PreRender 中的控制 FileUpload
的 onchange 事件中直接执行 this.form.submit()控制。 FileUpload
中添加了 Visible="false"控制上面。这是问题所在,但我在提问时忽略了它。
最佳答案
当针对 .Net 4.5 和 4.0 框架版本时,此代码适用于我。我将您的代码复制/粘贴到一个新的 Web 窗体应用程序中,并且在这两种情况下 fileImport.PostedFile 都不为空,而是包含我选择的图像的流。
您页面上的任何其他标记是否存在问题?或者你的页面生命周期?您在用户控件或 Web 表单页面上发布的 html/javascript 是什么?
关于asp.net - 第一次无法在更新面板内自动将文件上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34227505/
我是一名优秀的程序员,十分优秀!