我一直在努力寻找答案,但我找不到任何有效的解决方案。
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>
我错过了一些简单的东西吗? 任何提供的帮助非常感谢。 非常感谢。
答案 0 :(得分:2)
您是否将触发器置于<update panel>
内
<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
之外,看看它是否有效。推理:您不应该在FileUpload
内放置UpdatePanel
控件,因为UpdatePanel
会向服务器发送一个AJAX请求。
确保运行Web应用程序的凭据可以访问该文件。换句话说it's not a file permission issue
。
您还可以使用FileUpload
控件FileName
属性
if (FileUpload1.FileName != string.Empty)