我在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),我都会得到相同的结果。
可以提供任何可以提供的帮助。
答案 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"