首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“Asp.net FileUpload问题”算术运算导致溢出。ContentLength总是-2

“Asp.net FileUpload问题”算术运算导致溢出。ContentLength总是-2
EN

Stack Overflow用户
提问于 2011-03-31 15:48:41
回答 3查看 1.4K关注 0票数 2

嗨,我有一个更新面板,在我的测试解决方案中很可爱,但是当我把它放到主项目中时,它不能正确工作。我说得很简单,但还是没有joy,它包括:

  1. 文件上传控件
  2. a link按钮

链接按钮有一个onclick方法,它接收文件并创建一个字节数组。出于某种原因,contentLength每次都是-2。不管我使用的是哪种类型的文件。每一次!考虑到它在我的测试解决方案中工作得很好,这是非常令人沮丧的。

有什么我遗漏或应该看的东西吗?

谢谢:)

编辑:

我正在使用VS2008

代码:

代码语言:javascript
运行
复制
<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#

代码语言:javascript
运行
复制
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];
}
EN

回答 3

Stack Overflow用户

发布于 2011-04-14 20:59:23

您的测试代码必须执行完整的回发,这不是作为主要项目一部分的Updatepanel部分的情况。使用updatepanel,在检查文件内容时,文件可能还没有上载;对于总是先上传文件的完整回发,则不是这样。在这种情况下,它将始终通过您的错误。这只能使用某种类型的ActiveX控件来完成。

这篇文章可能给您一个很好的提示和方向:asp.net FileUpload event after choice is made and before submit for upload

票数 1
EN

Stack Overflow用户

发布于 2011-04-16 12:08:36

文件加载程序在更新面板中不能正常工作,因此如果您使用的是更新面板,则必须在更新面板中使用触发器,并且必须给出要在其上单击的控件或按钮的名称以上载该文件。

代码语言:javascript
运行
复制
    <%@ 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>
票数 1
EN

Stack Overflow用户

发布于 2011-04-01 08:22:40

由于FileUpload.PostedFile.InputStream.Length返回与FileUpload.PostedFile.ContentLength相同的内容,您是否检查您的文件大小是否小于maxRequestLength (默认情况下为4MB)或在web.config中指定:

代码语言:javascript
运行
复制
<system.web>
    <httpRuntime maxRequestLength="8192"/>
</system.web>

请参阅:http://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5502607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档