ASP.Net FileUpload 不接受超过 10 MB 的文件

ASP.Net FileUpload won't accept files over the size of 10 MB

提问人:starspejd 提问时间:10/28/2023 最后编辑:starspejd 更新时间:10/31/2023 访问量:70

问:

编辑:在下面添加了FileUpload。 编辑2:所以,我找到了一个解决方案,但它很愚蠢。我尝试使用额外的 FileUpload,它很好地接受了更大的文件。甚至在同一页上,甚至在第一个页面之后。然而,删除第一个并留下新的没有帮助,所以我的解决方案是一个愚蠢的解决方法 - 有两个并隐藏第一个。

                            <asp:FileUpload ID="FileUpload2" runat="server" />
                        </div>
                        <div class="u-active-custom-color-2 u-border-2 u-border-white u-btn u-btn-round u-button-style u-custom-color-3 u-custom-font u-heading-font u-hover-custom-color-1 u-radius-30">
                            <asp:FileUpload ID="FileUploadPpt" runat="server" />
                            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="FileUploadPpt"
                                ValidationExpression="(.+\.([Pp][Pp][Tt][Xx])|.+\.([Pp][Pp][Tt]))"></asp:RegularExpressionValidator>
                            <asp:Label ID="LabelPptFile" runat="server" Text=""></asp:Label>
                        </div>

我知道这不是一个好的选择,但似乎没有其他选择。即使只是在 fileUpload 上使用 visable 属性也会导致它中断,因此有两个 div 块。我离开这个,以防其他人遇到同样的问题......

原题: 我已经挣扎了几个小时了,我已经一筹莫展了。

我有一个asp:FileUpload控制器,它允许用户上传文件。我想允许更大的文件,所以我尝试将限制设置为 50 MB,如下面的配置文件除外所示。但是,当我尝试选择大小超过 10 MB 的文件时,控件不会抓取该文件。任何小于 10 MB 的内容都可以,并且会显示名称,但高于此范围只是说没有选择任何文件。我已经检查了我的控件,它没有限制。背后的代码是 c#,但此时它还没有被触发,所以它应该不太相关。

任何提示或建议都是值得赞赏的。

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  https://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <system.web>
        <!-- Traditional API: Register a custom SessionIDManager for BotDetect requests -->
        <compilation targetFramework="4.7.2" debug="false" />
        <httpRuntime targetFramework="4.7.2" maxRequestLength="51200" requestLengthDiskThreshold="51200" executionTimeout="3600"/>
    </system.web>
    <appSettings>
        <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    <system.codedom>
        <compilers>
            <compiler extension=".cs" language="c#;cs;csharp" warningLevel="4" compilerOptions="/langversion:7.3 /nowarn:1659;1699;1701;612;618" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            <compiler extension=".vb" language="vb;vbs;visualbasic;vbscript" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008,40000,40008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </compilers>
    </system.codedom>
    <system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="52428800" /><!--50MB-->
            </requestFiltering>
        </security>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>
<div class="u-active-custom-color-4 u-align-center-sm u-align-center-xs u-border-2 u-border-custom-color-4 u-btn u-btn-round u-button-style u-custom-color-6 u-custom-font u-heading-font u-hover-custom-color-5 u-radius-30">
                            <asp:FileUpload ID="FileUploadPpt" runat="server" />
                            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="FileUploadPpt"
                                ValidationExpression="(.+\.([Pp][Pp][Tt][Xx])|.+\.([Pp][Pp][Tt]))"></asp:RegularExpressionValidator>
                            <asp:Label ID="LabelPptFile" runat="server" Text=""></asp:Label>
                        </div>

一旦客户单击页面末尾的“创建”按钮,就会运行服务器端脚本,该脚本将进行实际上传。但我们甚至没有走那么远......

C# asp.net IIS

评论

0赞 Daniel A. White 10/28/2023
@PoulBak这是经典 asp.net
0赞 Shahram Alemzadeh 10/29/2023
可能您正在以某种方式使用客户端文件大小检查。web.config 似乎没问题。
0赞 starspejd 10/29/2023
@ShahramAlemzadeh,似乎并非如此。我将使用我的 FileUpload 更新问题。
0赞 samwu 10/30/2023
此问题是否仅在 iis 上发生?您可以在本地上传 10 MB 的文件吗?您也可以尝试清除浏览器的缓存,然后重试。
0赞 starspejd 10/31/2023
@samwu,我也尝试在localhost中执行此操作,但结果相同。我想我尝试清除了我的浏览器,但我会再试一次。

答:

0赞 starspejd 10/31/2023 #1

所以,我找到了一个解决方案,但它很愚蠢。我尝试使用额外的 FileUpload,它很好地接受了更大的文件。甚至在同一页上,甚至在第一个页面之后。然而,删除第一个并留下新的没有帮助,所以我的解决方案是一个愚蠢的解决方法 - 有两个并隐藏第一个。

                        <asp:FileUpload ID="FileUpload2" runat="server" />
                    </div>
                    <div class="u-active-custom-color-2 u-border-2 u-border-white u-btn u-btn-round u-button-style u-custom-color-3 u-custom-font u-heading-font u-hover-custom-color-1 u-radius-30">
                        <asp:FileUpload ID="FileUploadPpt" runat="server" />
                        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="FileUploadPpt"
                            ValidationExpression="(.+\.([Pp][Pp][Tt][Xx])|.+\.([Pp][Pp][Tt]))"></asp:RegularExpressionValidator>
                        <asp:Label ID="LabelPptFile" runat="server" Text=""></asp:Label>
                    </div>

我知道这不是一个好的选择,但似乎没有其他选择。即使只是在 fileUpload 上使用 visable 属性也会导致它中断,因此有两个 div 块。我离开这个,以防其他人遇到同样的问题......