几个方法:

    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. BOM头问题

    最近有不少在微博上谈论BOM头问题,BOM头会造成页面展示的乱码,xml分析出现问题.而我恰巧遇到一种情况,在wml页面中如果加上BOM头,PC浏览器(IE,火狐)和手机浏览器(UC)都很正常,而如果 ...

  2. 针对access数据库的增删改查

    1.执行查询操作:(ExecuteReader方法) string myConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data ...

  3. mysql优化 - mysql 的 hint

    FORCE INDEX 强制索引 只使用建立在field1上的索引,而不使用其它字段上的索引. SELECT * FROM table1 FORCE INDEX (field1) IGNORE IND ...

  4. 转:iOS 7人机界面准则

    原文来自于:http://www.infoq.com/cn/news/2014/02/ios-ui-design Apple官方推出的“iOS人机界面准则”一直被iOS开发者奉为绝对的设计参考宝典,特 ...

  5. ural 1104 Don’t Ask Woman about Her Age

    http://acm.timus.ru/problem.aspx?space=1&num=1104 #include <cstdio> #include <cstring&g ...

  6. 负电压基准电路(-2.5V/-5V电压基准)

    运算放大器大多数都是双电源的,这就要求有正负基准电压,除了从稳压源直接输出电压外,很多时候都是一个单电源对整个电路供电,这就要求要把正电压转换成负电压,从而产生正负的电压基准,对双电源运算放大器进行供 ...

  7. 如何判断一个C++对象是否在堆栈上(通过VirtualQuery这个API来获取堆栈的起始地址,然后就可以得到答案了),附许多精彩评论

      昨天有人在QQ群里问到如何判断一个C++对象是否在堆栈上, 我在网上搜索了下, 搜到这个么一个CSDN的帖子http://topic.csdn.net/t/20060124/10/4532966. ...

  8. QT下int与QByteArray的转换

    int转QByteArray QByteArray intToByte(int i) { QByteArray abyte0; abyte0.resize(4); abyte0[0] = (uchar ...

  9. ListView的getFirstVisiblePosition等方法返回的是哪个对象

    int firstPosition = lisView.getFirstVisiblePosition(); int lastPosition = lisView.getLastVisiblePosi ...

  10. android 截取指定位置字符串

    String str = "s\ziyuan"; String newStr = str.subString(str.indexOf("\\"),str.len ...