FileUpload控件导致文件为空

Str*_*lin 4 .net c# asp.net file-upload

我在使用asp.NET中的FileUpload控件时遇到了一些麻烦。由于某种原因,每当我尝试上传文件时,文件都会显示为空白。我能够保存文件而没有任何问题-当我检查发送到页面的POST内容时,正在发布数据(我使用firebug窥视了标题以查看是否发生了任何疯狂的事情),但是控件仅保存一个空文件,并在下面的代码中声明文件的大小为-2。

有谁知道这里会发生什么?

try
{
    UploadFile.PostedFile.SaveAs(filename);
}
catch (Exception ex)
{
    lblStatus.Text = "NOT OK - COULDN'T SAVE:" + filename + " " + ex.ToString();
    throw;
}
lblStatus.Text = "File Size: " + UploadFile.PostedFile.ContentLength.ToString();
Run Code Online (Sandbox Code Playgroud)

请注意,由于某种原因,这里的UploadFile.HasFile返回false,无论我尝试UploadFile.SaveAs(filename)还是UploadFile.PostedFile.SaveAs(filename),我都得到相同的结果。

可以提供的任何帮助将不胜感激。

Man*_*dra 5

如果您要将UploadControl放在UpdatePanel(Ajax的东西)中,则默认情况下它将不起作用。

您必须像这样在“提交”按钮上触发完整的回发:

<form id="form1" runat="server">
  <asp:ScriptManager ID="ScriptManager1" runat="server"/>
  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <Triggers>
    <asp:PostBackTrigger ControlID="UploadFile" /> 
  </Triggers>
  <ContentTemplate>
    <asp:FileUpload ID="FileUpload1" runat="server" />
    <asp:Button ID="UploadFile" runat="server" Text="Upload" OnClick="UploadFile" /> 
  </ContentTemplate>
  </asp:UpdatePanel>
</form>
Run Code Online (Sandbox Code Playgroud)


Mat*_*hew 0

确保页面上的 <form> 元素具有此属性/值

enctype="MULTIPART/FORM-DATA"
Run Code Online (Sandbox Code Playgroud)