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 服务。
  • 相关阅读:
    【原创】简单快速软件开发平台,C/S架构二次开发平台
    【原创】进销存快速开发框架 (Winform三层架构+DevExpress+MsSQL)
    MES软件开发工具
    Winform C/S架构TMS物流运输管理系统司机车辆GPS+手机APP定位参考设计
    C#权限管理框架介绍|C/S系统快速开发框架权限系统设计
    C# Winform程序调用WebApi接口实现增删改查(CRUD)实例源码教程
    ASP.NETWebApi实例教程:如何部署和发布WebApi到IIS服务器详解
    Web后端开发框架|WebApi后端主流开发框架介绍
    Asp.Net开源服务端框架,WebApi后端框架(C#.NET)
    Winform布局开源框架,Winform控件框架,插件化框架
  • 原文地址:https://www.cnblogs.com/loveYN/p/4509674.html
Copyright © 2011-2022 走看看