【问题标题】:FileUploader.Has File always returning false in .net 4.0FileUploader.Has File 在 .net 4.0 中总是返回 false
【发布时间】:2014-05-02 03:30:12
【问题描述】:

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

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> 

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

【问题讨论】:

    标签: c# asp.net file-upload


    【解决方案1】:

    你把触发器放在&lt;update panel&gt;里面了吗

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

    取自这篇帖子FileUpload.hasFile is always False

    如果仍然无法正常工作,请尝试将您的 FileUpload 控件放在 UpdatePanel 之外,看看它是否有效。推理:您不应该在UpdatePanel 中放置FileUpload 控件,因为UpdatePanel 会向服务器发送AJAX 请求。

    确保您运行 Web 应用程序所使用的凭据可以访问该文件。换句话说it's not a file permission issue

    你也可以使用FileUpload来控制FileName属性之类的

    if (FileUpload1.FileName != string.Empty) 
    

    【讨论】:

    • 感谢您的回复。它不是文件权限问题。尝试过(FileUpload1.FileName) - 它仍然返回 string.Empty。我意识到我不能根据按钮放置触发器,因为该方法是由 PageLoad 事件触发的,该事件是在更改上传者时触发的。 __DoPostBack
    • @JoshuaTan,你试过将FileUpload控件放在updatepanel之外吗?
    • 哦哇,它在更新面板之外工作!谢谢!但是我需要它在更新面板中,有没有办法解决这个问题,我仍然觉得它很神秘,发生了什么?但是真的很高兴它起作用了,非常感谢您
    • @JoshuaTan,到目前为止我不知道,但我已经编辑了我的答案,把它放在外面的原因。如果有帮助,请不要忘记通过单击投票按钮下方的检查按钮将其标记为答案
    • 非常感谢您的回复,对不起,如果我有 15 个或更多代表,我肯定会投票给您。但请知道,我感谢您的时间和精力。向像你这样聪明善良的人致敬=D
    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2017-01-28
    • 2020-10-04
    • 1970-01-01
    • 2013-10-30
    • 2012-04-04
    相关资源
    最近更新 更多