3

メールを送信するモジュールを開発していますが、機能の1つは複数のファイルをアップロードすることです...

私はこれを作成するための参照として使用しました:http: //www.dotnetcurry.com/ShowArticle.aspx?ID = 68

また、複数のファイルをアップロードできるようにjqueryを追加する必要がありました。

<script src="Scripts/jquery-1.3.2.js" type="text/javascript">
</script>

<script src="Scripts/jquery.MultiFile.js" type="text/javascript">
</script>

ただし、フォームのボタンを押したときに10MBを超えるファイルをアップロードすると(ポストバックが発生するたびに発生すると思います)、ブラウザーはページを読み込めません。だから私が欲しいのは私のボタンでこの関数をトリガーすることです:

protected void imgBtnEnviar_Click(object sender, ImageClickEventArgs e)
{
    int intBytes = 0;
    string strArchivos = "";
    string strRutaArchivos = "";
    bool blnBytes = true;
    bool blnPermitir = true;

    try
    {
        HttpFileCollection hfc = Request.Files;

        //Check if all files together are less than 10mb
        foreach (HttpPostedFile hpf in hfc)
        {
            intBytes += hpf.ContentLength;

            if (intBytes > 11000000)
            {
                blnBytes = false;
                break;
            }
        }

        if (blnBytes)
        {
            //Upload All attached files to server
            foreach (HttpPostedFile hpf in hfc)
            {
                if (hpf.FileName == "")
                {
                    break;
                }

                string strNombre = ((int)Session["Grupo"]) + "_" + (int)Session["EmailIdCliente"] + "_" + DateTime.Now.ToString("MM-dd-yyyy_HH.mm.ss") + "_" + Path.GetFileName(hpf.FileName);
                strArchivos += strNombre + ";";
                strRutaArchivos += Server.MapPath("~/Archivos/") + strNombre + ";";
                hpf.SaveAs(Server.MapPath("~/Archivos/") + strNombre);
            }
        }
    }

    catch
    {
        blnPermitir = false;
    }

    if (!blnBytes || !blnPermitir)
    {
        //Error Message Displayed To User
        ClientScript.RegisterStartupScript(this.GetType(), "Mensaje", "alert('Maximo Puede Enviar 10MB En Archivos');", true);
    }

    else
    {
        //Moving on to send email
    }
}

私が欲しいのは、blnBytesがfalseに等しい場合(結合されたすべてのファイルが10mbを超えるとfalseになる)、エラーメッセージが表示されるだけですが、1つのファイルが10mbを超えても機能させるにはどうすればよいですか?? ... 。

あなたがその感謝で私を助けることができることを願っています

4

2 に答える 2

2

web.config(httpRuntime、maxRequestLengthパラメーター)でラージファイルサポートを有効にする必要があります。

サンプルは次のとおりです。

    <httpRuntime requestValidationMode="2.0"
     executionTimeout="6000"
     maxRequestLength="20485760"
     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" />

これについての詳細はここで見つけることができます:http: //msdn.microsoft.com/en-us/library/e1f13641 (v = vs.71).aspx

于 2012-09-18T21:24:22.237 に答える
2

これを試してみてください。

foreach (HttpPostedFile hpf in hfc)
{
    if(hpf.ContentLength > 11000000)
    {
        blnBytes = false;
        break;
    }
    intBytes += hpf.ContentLength;
    if (intBytes > 11000000)
    {
        blnBytes = false;
        break;
    }
}
于 2012-09-18T21:28:21.730 に答える