zoukankan      html  css  js  c++  java
  • Asp.Net上传大文件(页面超时)

    几个方法:

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

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

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

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

    原:

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

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

    对机器上Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config进行修改:

    原:

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

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

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

            在“服务”里关闭 iis admin service 服务。
       找到 C:\WINDOWS\system32\inetsrv下的 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 服务。
      找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。
      找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)
      存盘,然后重启 iis admin service 服务。
  • 相关阅读:
    A*算法在栅格地图上的路径搜索(python实现)_1.1
    python基础
    Celery ---异步任务,定时任务,周期任务
    Flask-Script
    Flask-SQLAlchemy
    SQLAlchemy的增删改查 一对多 多对多
    Django Rest framework
    django之forms组件
    缓存, 队列(Redis,RabbitMQ)
    django框架(2)
  • 原文地址:https://www.cnblogs.com/oneword/p/1566968.html
Copyright © 2011-2022 走看看