FileUpload控件导致空文件

时间:2009-11-12 21:03:20

标签: c# asp.net .net file-upload

我在asp.NET中使用FileUpload控件时遇到了一些麻烦。出于某种原因,每当我尝试上传文件时,文件都会显示为空白。我可以保存文件而不会出现任何问题 - 当我检查发送到页面的POST内容时,数据正在发布(我使用firebug查看标题以查看是否有任何疯狂事件发生)但是control只保存一个空文件,并在下面的代码中声称该文件的大小为-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();

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

可以提供任何可以提供的帮助。

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

你还面临这个问题吗?我刚遇到同样的问题,在我的情况下,错误是由使用和关闭FileUpload控件的流(Filecontrol.FileContent或FileControl.PostedFile.InputStream)引起的,因此我得到了一个0大小的上传文件。删除那部分代码解决了我的问题。

L,

答案 2 :(得分:0)

确保&lt; form&gt;您网页上的元素具有此属性/值

enctype="MULTIPART/FORM-DATA"