嗨,我有一个更新面板,在我的测试解决方案中很可爱,但是当我把它放到主项目中时,它不能正确工作。我说得很简单,但还是没有joy,它包括:
链接按钮有一个onclick方法,它接收文件并创建一个字节数组。出于某种原因,contentLength每次都是-2。不管我使用的是哪种类型的文件。每一次!考虑到它在我的测试解决方案中工作得很好,这是非常令人沮丧的。
有什么我遗漏或应该看的东西吗?
谢谢:)
编辑:
我正在使用VS2008
代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<body>
<form id="form1" runat="server">
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:LinkButton ID="btnUpload" runat="server" ValidationGroup="uploadform" CssClass="uploadbutton" OnClick="btnUpload_Click">Upload</asp:LinkButton>
</form>
</body>
</html>
C#
protected void btnUpload_Click(object sender, EventArgs e)
{
var intDoccumentLength = FileUpload1.PostedFile.ContentLength;
// will crash here as content length is -2 for some reason~???
byte[] newDocument = new byte[intDoccumentLength];
}
发布于 2011-04-14 12:59:23
您的测试代码必须执行完整的回发,这不是作为主要项目一部分的Updatepanel部分的情况。使用updatepanel,在检查文件内容时,文件可能还没有上载;对于总是先上传文件的完整回发,则不是这样。在这种情况下,它将始终通过您的错误。这只能使用某种类型的ActiveX控件来完成。
这篇文章可能给您一个很好的提示和方向:asp.net FileUpload event after choice is made and before submit for upload
发布于 2011-04-16 04:08:36
文件加载程序在更新面板中不能正常工作,因此如果您使用的是更新面板,则必须在更新面板中使用触发器,并且必须给出要在其上单击的控件或按钮的名称以上载该文件。
<%@ Page Language="C#" MasterPageFile="~/FullViewMasterPage.master" AutoEventWireup="true" CodeFile="Test1.aspx.cs" Inherits="Test1" Title="Untitled Page" %>
<%@ Register TagPrefix="yaf" Namespace="YAF" Assembly="YAF" %>
<%@ Register TagPrefix="yc" Namespace="YAF.Controls" Assembly="YAF" %>
<asp:Content ID="Content1" ContentPlaceHolderID="FullViewContentPlaceHolder" Runat="Server">
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:FileUpload id="fileUpload" runat="server" ></asp:FileUpload>
<asp:Button ID="Upload" runat="server" OnClick="Upload_Click" Text="Upload The Image" /><br />
</ContentTemplate>
</asp:UpdatePanel>
<br />
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Upload" EventName="Upload_Click" />
</Triggers>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Label ID="lblTime3" runat="server" /><br />
</ContentTemplate>
</asp:UpdatePanel>
</form>
</asp:Content>
<code>
发布于 2011-04-01 00:22:40
由于FileUpload.PostedFile.InputStream.Length返回与FileUpload.PostedFile.ContentLength相同的内容,您是否检查您的文件大小是否小于maxRequestLength (默认情况下为4MB)或在web.config中指定:
<system.web>
<httpRuntime maxRequestLength="8192"/>
</system.web>
https://stackoverflow.com/questions/5502607
复制相似问题