• Asp.Net--上传大文件(页面超时)


    几个方法:

      1. 修改文件上传大小的限制
      2. 以文件形式保存到服务器
      3. 转换成二进制字节流保存到数据库
      4. 将二进制通过循环的方式写入磁盘

    一、修改文件上传大小的限制

    通过对web.config和machine.config文件进行修改.

    对网站根目录下的web.config进行修改:

    原:

    <httpRuntime executionTimeout="90" maxRequestLength="800000" useFullyQualifiedRedirectUrl="false"/>

    对executionTimeout进行修改,可以修改超时时间.对maxRequestLength进行修改,可以修改上传文件的上限.

    对机器上Microsoft.NETFrameworkv1.1.4322CONFIGmachine.config进行修改:

    原:

    	<httpRuntime 
                executionTimeout="90"
                maxRequestLength="4096"
                useFullyQualifiedRedirectUrl="false"
                minFreeThreads="8"
                minLocalRequestFreeThreads="4"
                appRequestQueueLimit="100"
                enableVersionHeader="true"
            />

    对executionTimeout进行修改,可以修改超时时间.对maxRequestLength进行修改,可以修改上传文件的上限.

    还可以(没测试过,不知道是否有用):

            在“服务”里关闭 iis admin service 服务。
       找到 C:WINDOWSsystem32inetsrv下的 metabase.xml 文件。
       找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(可修改为20M即:20480000)
       存盘,然后重启 iis admin service 服务。

    前提方法:

        private string GetFilePath()
        {
            string Folder = Server.MapPath("temp");
            string file = FileUpload1.FileName;
            string RealFile = Folder + "\" + file;       
    
            return RealFile;
        }
     

    二、以文件形式保存到服务器

        protected void Upload_Click(object sender, EventArgs e)
        {
            string filename = FileUpload1.FileName;
            FileUpload1.SaveAs(Server.MapPath("source/") + filename);
    
        }
        protected void Button4_Click(object sender, EventArgs e)
        {
            HttpPostedFile posted = FileUpload1.PostedFile;
            string RealFile = GetFilePath();
            posted.SaveAs(RealFile);        
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string filepath = GetFilePath();
            byte[] b = FileUpload1.FileBytes;
    
            FileStream fs = new FileStream(filepath, FileMode.Create);
            fs.Write(b, 0, b.Length);
            fs.Close();
        }

     三、转换成二进制字节流保存到数据库

        protected void Button3_Click(object sender, EventArgs e)
        {
            HttpPostedFile posted = FileUpload1.PostedFile;
            byte[] b = new byte[posted.ContentLength];
            posted.InputStream.Read(b, 0, b.Length);
            /*
             * 将数据写入数据库
              */
        }

    四、将二进制以循环的方式写入磁盘

        protected void Button3_Click(object sender, EventArgs e)
        {
            string filepath = GetFilePath();
            FileStream stream = new FileStream(filepath, FileMode.Create);
    
            int length = 20480;
            byte[] b = new byte[length];
            try
            {
                int size = FileUpload1.PostedFile.InputStream.Read(b, 0, length);
    
                while (size > 0)
                {
                    stream.Write(b, 0, size);
                    size = FileUpload1.PostedFile.InputStream.Read(b, 0, length);
                }
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message + "<br/>");
                Response.Write(ex.InnerException.Message);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Flush();
                    stream.Close();
                }
            }        
        }

    附:

      1. 在IIS中调大一些脚本超时时间,操作方法是: 在IIS的“站点或虚拟目录”的“主目录”下点击“配置”按钮,设置脚本超时时间为:300秒 (注意:不是Session超时时间)
      2. 解决SERVER 2003无法下载超过4M的附件问题
        在“服务”里关闭 iis admin service 服务。
        找到 windowssystem32inetsrv 下的 metabase.xml 文件。
        找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)
        存盘,然后重启 iis admin service 服务。
  • 相关阅读:
    在线自动创建springboot工程
    java线程自带队列的使用以及线程阻塞
    如何分析java内存泄漏问题
    java接口入参模板化,适用于企业化服务远程调度模板化的场景,接口入参实现高度可配置化
    打造springboot高性能服务器(spring reactor的使用)
    docker 5 docker-阿里云加速配置
    docker 4 docker的三要素
    docker 3 docker安装
    docker 2 docker介绍
    docker 1 为什么要使用docker
  • 原文地址:https://www.cnblogs.com/loveYN/p/4509674.html
Copyright © 2020-2023  润新知