Asp.Net--上传大文件(页面超时)
几个方法:
- 修改文件上传大小的限制
- 以文件形式保存到服务器
- 转换成二进制字节流保存到数据库
- 将二进制通过循环的方式写入磁盘
一、修改文件上传大小的限制
通过对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();
}
}
}
附:
- 在IIS中调大一些脚本超时时间,操作方法是: 在IIS的“站点或虚拟目录”的“主目录”下点击“配置”按钮,设置脚本超时时间为:300秒 (注意:不是Session超时时间)
- 解决SERVER 2003无法下载超过4M的附件问题
在“服务”里关闭 iis admin service 服务。
找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。
找到 AspBufferingLimit 把它修改为需要的值(可修改为20M即:20480000)
存盘,然后重启 iis admin service 服务。
Asp.Net--上传大文件(页面超时)的更多相关文章
- ASP.NET上传大文件的问题
原文:http://www.cnblogs.com/wolf-sun/p/3657241.html?utm_source=tuicool&utm_medium=referral 引言 之前使用 ...
- Asp.Net上传大文件带进度条swfupload
Asp.Net基于swfupload上传大文件带进度条百分比显示,漂亮大气上档次,大文件无压力,先看效果 一.上传效果图 1.上传前界面:图片不喜欢可以自己换 2.上传中界面:百分比显示 3.上传后返 ...
- ASP.NET上传大文件出现网页无法显示的问题
使用FileUpload上传的时候,默认允许大小是4M,而当小于4M的时候正常运行:当超过4M将显示网页无法显示.解决方法如下: 在web.config中的<system.web>< ...
- asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求
HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求,原因是Web服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大 ...
- ASP.Net上传大文件解决方案之IIS7.0下的配置
开源的Brettle.Web.NeatUpload.在公司IIS6.0使用正常,但是在Windows 2008 server IIS7上使用不正常.在网上看到一个解决办法但是没有效果 IIS 7 默认 ...
- asp.net上传大文件
Asp.net默认允许上传文件的最大值为4M. 如果想要上传更大的文件,需要修改web.config文件,方法是: 在<system.web>节点中添加代码 <httpRuntime ...
- ASP.NET 上传大文件(原创)
问题描述 需要在网站中上传文件,但是当文件大小太大的时候IIS会拒绝连接,导致用户看到不友好的错误界面. 解决方法 1.服务器端处理 在globle.asax中的protected void Appl ...
- asp.net上传大文件的解决方案
IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头. 一. 两个必要响应头Accept-Ranges.ETag 客户端每次提交下载请求时,服务 ...
- ASP.NET上传大文件报错,IIS7.0
打开你系统盘(我是C盘),找到C:\Windows\System32\inetsrv\config\schema目录,该目录下有一个IIS_schema.xml,右击打开文件,Ctrl+F,然后输入& ...
随机推荐
- 实现DIV拖动
Ajax的到来让B/S中的客户端中开发有火了一把,网上出现了很多优秀的开源框架和UI,比较著名了有prototype,YUI,GWT等,但很多时候发现这些东西很难用到你的系统之中,有时候你的系统仅仅需 ...
- Poweroff – 很好很强大的定制关机工具
Poweroff – 很好很强大的定制关机工具 Poweroff 是一个用来管理电脑关机系统的小工具,支持定时,支持远程 作者开放源代码,有兴趣的同学可以尝试着制作一下汉化版本. 可以设定不同时间 ...
- 查看文件系统类型的Linux命令
不需挂载就能查看的命令: 1. file [root@localhost dev]# file -s /dev/sda1 /dev/sda1: Linux rev 1.0 ext4 filesy ...
- 存储过程中拼接sql的示例
create or replace package body CRF_CMS_DOCTOR_PKG is --根据医院查询医生PROCEDURE P_HOSPITALBYDOCTOR_LIST ( v ...
- 一个用httpPost,get访问外网接口,参数json,返回json的示例
package com.royal.util; import java.io.BufferedReader;import java.io.DataInputStream;import java.io. ...
- myEclipse8.* 手动安装ADT插件[转]
Myeclipse8.6手动添加插件: 自动在线安装完ADT插件会导致myeclipse8.6中无法创建web项目以及其他项.解决方法是手动安装步骤如下: 首先安装好 MyEclipse 8.6. 1 ...
- The 500 Most Commonly Used Words in the English Language
Based on the combined results of British English, American English and Australian English surveys of ...
- IL2CPP的前世今生
在2014年年中的时候,Unity3D官方博客上却发了一篇"The future of scripting in unity"的文章,引出了IL2CPP的概念,感觉有取代Mono之 ...
- 包含无数好东西的ownCloud
ownCloud 是一个来自 KDE 社区开发的免费软件,提供私人的 Web 服务.当前主要功能包括文件管理(内建文件分享).音乐.日历.联系人等等,可在PC和服务器上运行. 简单来说就是一个基于Ph ...
- QT 让窗口(或控件)居中
代码如下: XXX::XXX(QWidget *parent /* = 0 */) { .................. //注意,resize一定要放在这段代码的前面 resize(300, 3 ...