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.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 服务。
  • 相关阅读:
    151. 翻转字符串里的单词(trim函数与split函数的使用)
    Java splt方法,按照空格分割字符串成为字符串数组(转载)
    137. 只出现一次的数字 II(没完全按要求做)
    129. 求根到叶子节点数字之和(递归
    125. 验证回文串(replaceAll()与toLowerCase())
    美团上海Java实习(已offer)面经(还没写完,转载)
    二叉树中序遍历
    优先队列/最大堆
    防御式编程
    JWT
  • 原文地址:https://www.cnblogs.com/loveYN/p/4509674.html
Copyright © 2011-2022 走看看