asp.net – 在更新面板中自动上传文件到服务器第一次不起作用
要求
我正在尝试上传一个文件,一旦用户选择它。我必须满足以下要求: >按钮看起来像应用程序中的其他按钮。 当前代码 以下是我的视图文件的外观: <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> 相关Javascript: <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按钮。 但问题是这个 fileImport.PostedFile在第一次用户选择文件时为空。一切工作正常,第二次和从那里。 有关 This question与我的问题密切相关,但OP可能需要像Gmail一样的Async上传解决方案。我已经尝试过如下这个问题的答案: > __doPostBack()在btnUpload的OnClientClick事件中 补充笔记 >当我没有更新面板时,这个东西很好。我正在使用this.form.submit()直接在FileUpload控件的onchange事件中。 注意:在上面的FileUpload控件中添加了Visible =“false”。这是问题,但我在提问时忽视了这个问题。 解决方法
此代码适用于我,同时定位.Net 4.5和4.0框架版本。我将您的代码复制/粘贴到一个新的Web窗体应用程序中,在这两种情况下,fileImport.PostedFile不为空,但包含我选择的图像流。
您网页上的任何其他标记是否有问题?或者您的页面生命周期?您在用户控件或Web表单页面上发布的HTML / JavaScript? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 对于未更改的静态内容,Amazon CloudFront不会一
- asp.net-mvc – 模型支持DB上下文已更改;考虑代码优先迁移
- asp.net – ELMAH是否默认实施并启用了防洪功能?
- asp.net-mvc-3 – MVC3:如何在HtmlHelper扩展中以编程方式
- asp.net-mvc-3 – ASP.NET MVC 3:当BeginForm在布局上时生
- ASP.NET使用SHA256还是SHA1?
- asp.net-core – 基于策略的授权可以更加动态吗?
- asp.net-mvc-4 – .net 4.5 ASP.Net web API JSONP支持
- asp.net-mvc – 如何使用asp.net mvc EditorTemplate
- asp.net-mvc – ASP.NET MVC:在回发上更改模型的属性
- asp.net-core – 在ASP.NET 5 MVC6中使用什么而不
- ASP.NET对txt文件相关操作(读取、写入、保存)
- asp.net-mvc – 使用MVC Framework RC1更新断开连
- asp.net-mvc – 如何获取视图html并返回客户端
- asp.net-mvc – 绑定排除Asp.net MVC不适用于LIN
- asp.net – 可能导致XML解析错误:没有找到元素?
- asp.net – MVC3:如何强制Html.TextBoxFor使用模
- asp.net-mvc – Asp.Net MVC 2 – 更改PropertyV
- AntiXss.HtmlEncode vs AntiXss.GetSafeHtmlFrag
- asp.net-core – 配置ASP.Net Core以使用OIDC对T