FileUploader.Has File在.net 4.0中总是返回false

本文关键字:返回 false Has File net FileUploader | 更新日期: 2023-09-27 18:01:09

我一直在努力寻找答案,但我找不到任何有效的解决方案。

MultipleFileUploader.ascx:
     <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
        </asp:ScriptManagerProxy>  
    <asp:UpdatePanel ID="UpdatePanel1"  runat="server">
        <ContentTemplate>
    <asp:FileUpload ID="FileUpload1" runat="server" 
                    multiple="multiple" onchange="__doPostBack('<%= UpdatePanel1.ClientID %>', ''); type="file" />
      </ContentTemplate>
    </asp:UpdatePanel>

代码背后:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
            onAttach();
    }

当用户使用Postback __doPostBack选择文件时,它会上传文件这不应该是浏览器的问题,因为我在chrome firefox和IE上遇到了同样的问题。在我们升级到.net 4.0之前,代码一直运行良好,由于某种原因,它的FileUploader.HasFile总是返回false。

我试过:

Page.Form.Attributes.Add("enctype", "multipart/form-data"); 

和:

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

我是不是错过了一些简单的东西?我们非常感谢您提供的任何帮助。非常感谢。

FileUploader.Has File在.net 4.0中总是返回false

您是否像一样将触发器放置在<update panel>

<asp:UpdatePanel ID="UpdatePanel1"  runat="server">
  <Triggers> 
    <asp:PostBackTrigger ControlID="btnUploadFile" /> 
  </Triggers> 
 <rest of the code>
</asp:UpdatePanel>

摘自这篇文章FileUpload.has文件总是假的

如果它仍然不起作用,那么尝试将FileUpload控件放置在UpdatePanel之外,看看它是否起作用。推理:不应该在UpdatePanel中放置FileUpload控件,因为UpdatePanel会向服务器发送AJAX请求。

请确保运行web应用程序所使用的凭据可以访问该文件。换句话说,CCD_ 6。

也可以像一样使用FileUpload控件FileName属性

if (FileUpload1.FileName != string.Empty)