none
FileUpload这个控件有时候出错,难道是跟上传文件的大小有关? RRS feed

  • 问题

  •      FileUpload这个控件我用来还原数据库时选择相应的数据库备份,path是文件路径,同时我用后台C#代码的:Response.Write(path)来检查文件名是否正确。

        并一般情况下可以成功如图1;但如果文件比较大不管文件名后缀是什么,都会出现图1中部所示的错误现象。我的文件放在图1的下部,可以看到文件大小。

        这个问题有点奇葩,我尝试过在母版页中加入enctype="multipart/form-data"但是没用,请大家帮忙看看,谢谢!

    ----------------------------------------------代码1------------------------------------------------------------

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="BackupAndRestore02.aspx.cs" Inherits="Admin_BackupAndRestore02" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
    
    
    
        <table cellpadding="0" cellspacing="0" class="style1">
            <tr>
                <td>
                    <asp:RadioButtonList ID="RadioButtonList_BackupAndRestore" runat="server" AutoPostBack="True" Font-Size="9pt"
                                        RepeatDirection="Horizontal">
                                        <asp:ListItem Selected="True">备份数据库</asp:ListItem>
                                        <asp:ListItem>还原数据库</asp:ListItem>
                                    </asp:RadioButtonList></td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td>
                    <span style="font-size: 9pt">操 作 数 据 库</span><asp:DropDownList ID="dropSqlName" 
                        runat="server" Font-Size="9pt" Width="190px">
                    </asp:DropDownList>
                </td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td>
                    <asp:Image ID="Image_beifentu" runat="server" 
                        ImageUrl="~/Images/BackupAndRestore/beifentu.bmp" />
                </td>
                <td>
                    <asp:Image ID="Image_huanyuantu" runat="server" 
                        ImageUrl="~/Images/BackupAndRestore/huanyuantu.bmp" />
                </td>
            </tr>
            <tr>
                <td>
                    <span style="font-size: 9pt">备份名称和位置</span><%--<asp:TextBox ID="TextBox_Path" 
                        runat="server" Font-Size="9pt" Width="183px"></asp:TextBox>--%>
                    <%--<asp:RequiredFieldValidator ID="RequiredFieldValidator_Path" runat="server" 
                        ControlToValidate="TextBox_Path" ErrorMessage="备份地址不能为空">*</asp:RequiredFieldValidator>--%>
                </td>
                <td>
                    <span style="font-size: 9pt">还 原 数 据 库</span><asp:FileUpload ID="fileShow" 
                        runat="server" Font-Size="9pt" Width="190px" />
                </td>
            </tr>
            <tr>
                <td>
                    <asp:ImageButton ID="ImageButton_btnbf" runat="server" 
                        ImageUrl="~/Images/BackupAndRestore/btnbf.JPG" 
                        onclick="ImageButton_btnbf_Click" />
                </td>
                <td>
                    <asp:ImageButton ID="ImageButton_btnhyk" runat="server" 
                        ImageUrl="~/Images/BackupAndRestore/btnhyk.bmp" 
                        onclick="ImageButton_btnhyk_Click" />
                </td>
            </tr>
            <tr>
                <td>
                    &nbsp;</td>
                <td>
                    <asp:ValidationSummary ID="ValidationSummary_BackupAndRestore" runat="server" 
                        Font-Size="9pt" ShowMessageBox="True" ShowSummary="False" />
                </td>
            </tr>
        </table>
    
    
    
    </asp:Content>
    <asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    </asp:Content>

    ------------------------------------------------代码2------------------------------------------------

    protected void ImageButton_btnhyk_Click(object sender, ImageClickEventArgs e)
        {
             //获得备份路径及数据库名称
             string path =this.fileShow.PostedFile.FileName;
             Response.Write(path);
             //获取文件的后缀名
             //string last = path.Substring(path.LastIndexOf(".") + 1);
             //string dbname = this.dropSqlName.SelectedValue;
             

    ---------------------------------------图1---------------------------------------


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2014年3月24日 1:45

答案

  •     在config.web 节点下加入

    <httpRuntime executionTimeout="110" maxRequestLength="22528" requestLengthDiskThreshold="80" useFullyQualifiedRedirectUrl="false" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="5000" enableKernelOutputCache="true" enableVersionHeader="true" requireRootedSaveAsPath="true" enable="true" shutdownTimeout="90" delayNotificationTimeout="5" waitChangeNotification="0" maxWaitChangeNotification="0" enableHeaderChecking="true" sendCacheControlHeader="true" apartmentThreading="false" />

        修改maxRequestLength="22528"即可!原来config默认的大小是4M,难怪出错。


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!


    2014年3月24日 3:48