几个方法:

    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 服务。

Asp.Net--上传大文件(页面超时)的更多相关文章

  1. ASP.NET上传大文件的问题

    原文:http://www.cnblogs.com/wolf-sun/p/3657241.html?utm_source=tuicool&utm_medium=referral 引言 之前使用 ...

  2. Asp.Net上传大文件带进度条swfupload

    Asp.Net基于swfupload上传大文件带进度条百分比显示,漂亮大气上档次,大文件无压力,先看效果 一.上传效果图 1.上传前界面:图片不喜欢可以自己换 2.上传中界面:百分比显示 3.上传后返 ...

  3. ASP.NET上传大文件出现网页无法显示的问题

    使用FileUpload上传的时候,默认允许大小是4M,而当小于4M的时候正常运行:当超过4M将显示网页无法显示.解决方法如下: 在web.config中的<system.web>< ...

  4. asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求

    HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求,原因是Web服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大 ...

  5. ASP.Net上传大文件解决方案之IIS7.0下的配置

    开源的Brettle.Web.NeatUpload.在公司IIS6.0使用正常,但是在Windows 2008 server IIS7上使用不正常.在网上看到一个解决办法但是没有效果 IIS 7 默认 ...

  6. asp.net上传大文件

    Asp.net默认允许上传文件的最大值为4M. 如果想要上传更大的文件,需要修改web.config文件,方法是: 在<system.web>节点中添加代码 <httpRuntime ...

  7. ASP.NET 上传大文件(原创)

    问题描述 需要在网站中上传文件,但是当文件大小太大的时候IIS会拒绝连接,导致用户看到不友好的错误界面. 解决方法 1.服务器端处理 在globle.asax中的protected void Appl ...

  8. asp.net上传大文件的解决方案

    IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...

  9. ASP.NET上传大文件报错,IIS7.0

    打开你系统盘(我是C盘),找到C:\Windows\System32\inetsrv\config\schema目录,该目录下有一个IIS_schema.xml,右击打开文件,Ctrl+F,然后输入& ...

随机推荐

  1. 1、CentOS6.5系统安装及学习

    1.   CentOS6.5系统安装及学习 1.需要的工具,Vmware workstation12虚拟机,CentOS6.5 ISO镜像,选择的是32位系统. 2.下载CentOS6.5地址:htt ...

  2. 禁止ios默认拉动弹性行为

    document.ontouchmove = function(e) { e.preventDefault();} /** 禁止ios默认拉动弹性行为**///屏蔽ios下浏览器滚动缓冲效果

  3. JAVA三大框架SSH的各自作用

        一.Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯. Spring的 ...

  4. css3 之表格隔行分色显示

    <html> <head> <title></title> <style type="text/css"> table{ ...

  5. /dev/urandom

    /dev/urandom则是一个非阻塞的发生器: dev/random的一个副本是/dev/urandom (”unlocked”,非阻塞的随机数发生器),它会重复使用熵池中的数据以产生伪随机数据.这 ...

  6. myEclipse异常解决:Errors occurred during the build. Errors running builder Mule 3 hot deployment

    选择一个项目—-右键Properties—-Builders—-取消 “JavaScript Validator”  和 Mule 3 hot deployment 的勾就OK了 根据具体异常,勾选. ...

  7. rsyslog 解决日志截断不读取问题

    reopenOnTruncate [on/off] (requires v8.16.0+) Default: off 这是一个实验性的东西告诉rsyslog 重新input file 当它被trunc ...

  8. delphi编写dll心得, 谢谢原作者的分享。转

    delphi编写dll心得 1.每个函数体(包括exports和非exports函数)后面加 'stdcall;', 以编写出通用的dll2.exports函数后面必须加'export;'(放在'st ...

  9. strcpy完整版 与 strcpy为什么有返回值

    一个标准的strcpy函数: 原本以为自己对strcpy还算比较了解,结果面试时还是悲剧了. 下面给出网上strcpy的得分版本: 2分 void strcpy( char *strDest, cha ...

  10. 【KMP】Number Sequence

    KMP算法 KMP的基处题目,数字数组的KMP算法应用. 主要是next[]数组的构造,next[]存储的是字符的当前字串,与子串前字符匹配的字符数. 移动位数 = 已匹配的字符数 - 对应的部分匹配 ...