用.Net的File控件上传文件的解决方案_实用技巧

在遍历了csdn中所有关于上传大文件的帖子以后,写了这篇垃圾。(:-)) 

上传大文件,有好几种方法: 

1、思归的HttpWorkerRequest方法,太难,看不懂:-(
2、利用第三方的控件 AspNetUpload 要钱!!算了,咱还是喜欢免费的。
3、修改web.config文件,但是不能捕获错误。
4、通过ftp的方式上传。服务器需要提供ftp服务。 

没辙,只好选第三种方式,谁让咱太蠢了呢!(太蠢了,没有关系,要多吃鱼,听说吃鱼能聪明点。) 

那就仔细专研第三种方式吧! 

修改Webcong文件: 

<system.web>
<httpRuntime maxRequestLength="40690"
useFullyQualifiedRedirectUrl="true"
executionTimeout="6000"
useFullyQualifiedRedirectUrl="false" 
minFreeThreads="8" 
minLocalRequestFreeThreads="4" 
appRequestQueueLimit="100" 
enableVersionHeader="true"
/>
</system.web>

其中与上传有密切关系的是: 
maxRequestLength 
指示 ASP.NET 支持的最大文件上载大小。 
该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。 
指定的大小以 KB 为单位。 
默认值为 4096 KB (4 MB)。 
executionTimeout 
指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。 
单位为秒,在上传大的文件时把这个设的大一些。 
如果服务器内存512M,已可上传大小160M的文件。(没试过,csdn上众帖子的一致意见。) 
到这里web.config的设置就已经结束。 
可是一旦上传文件的大小超过了这个设置的文件大小范围就会发生如下错误: 
该页无法显示 
您要查看的页当前不可用。网站可能遇到技术问题,或者您需要调整浏览器设置。 
虽然解决不了,那也要捕获这个错误啊!怎么办呢? 
最近吃了几条鱼,想了想,由于这个错误是由file控件引发的前台错误,所以在后台想利用try...catch来捕获是行不通的。 
于是想到了利用.NET的错误捕获页面的机制来处理。可行哦。 

1、先设置web.config
<customErrors mode="On"/> 
2、新建一个error.aspx 文件,专门用来捕获错误的。
3、在上传文件的aspx页面的前台页面里添加page指令。ErrorPage="UploadError.aspx"
4、在error.aspx中添加一些代码来判断错误信息是否是file引起的前台错误。
public class UploadError : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex != null)
{
Response.Redirect("../error.aspx");
}
else //前台错误ex为空值

Response.Redirect("uploadexcel.aspx?err=1"); //重新跳转到上传页面,
加上err参数是为了显示错误信息
}
}

5、显示错误提示。
public class uploadexcel : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
if (Request["err"] == "1")
{
Page.RegisterStartupScript("budget","<script language = javascript>
alert('Upload file has failed ! File size is too large !')</script>");
}
}
}
6、搞定收工。(这鱼没有白吃啊)
经过上述修改,现在的上传变成了,程序指定文件大小,如果超过,则弹出错误提示。
这样一来,就好多了,最起码自己能接受了,跟用户解释也不太费劲了。

时间: 2024-07-28 23:43:07

用.Net的File控件上传文件的解决方案_实用技巧的相关文章

用.NET的File控件上传文件的解决方案

解决|控件|上传 在遍历了csdn中所有关于上传大文件的帖子以后,写了这片垃圾.(:-)) 上传大文件,有好几种方法: 1.思归的HttpWorkerRequest方法,太难,看不懂:-( 2.利用第三方的控件 AspNetUpload 要钱!!算了,咱还是喜欢免费的. 3.修改web.config文件,但是不能捕获错误.4.通过ftp的方式上传.服务器需要提供ftp服务. 没辙,只好选第三种方式,谁让咱太蠢了呢!(太蠢了,没有关系,要多吃鱼,听说吃鱼能聪明点.) 那就仔细专研第三种方式吧! 修

利用.NET的File控件上传文件的最终解决方案(个人版)

个人版|解决|控件|上传    在遍历了csdn中所有关于上传大文件的帖子以后,写了这片垃圾.(:-))   上传大文件,有好几种方法:   1.思归的HttpWorkerRequest方法,太难,看不懂:-(   2.利用第三方的控件 AspNetUpload 要钱!!算了,咱还是喜欢免费的.   3.修改web.config文件,但是不能捕获错误.   4.通过ftp的方式上传.服务器需要提供ftp服务.      没辙,只好选第三种方式,谁让咱太蠢了呢!(太蠢了,没有关系,要多吃鱼,听说吃

利用.NET的File控件上传文件的最终解决方案

解决|控件|上传 在遍历了csdn中所有关于上传大文件的帖子以后,写了这片垃圾.(:-))上传大文件,有好几种方法:1.思归的HttpWorkerRequest方法,太难,看不懂:-(2.利用第三方的控件 AspNetUpload 要钱!!算了,咱还是喜欢免费的.3.修改web.config文件,但是不能捕获错误.4.通过ftp的方式上传.服务器需要提供ftp服务. 没辙,只好选第三种方式,谁让咱太蠢了呢!(太蠢了,没有关系,要多吃鱼,听说吃鱼能聪明点.) 那就仔细专研第三种方式吧! 修改Web

高拍仪 上传图片-如何不用file控件上传本地图片到服务器

问题描述 如何不用file控件上传本地图片到服务器 公司引进高拍仪,想拍完照片点上传按钮直接上传图片.高拍仪接口能提供照片的本地路径,现在的问题是不用file控件选择,只有路径,不知道如何上传到服务器,求解决方案. 解决方案 做成c/s,b/s你只能做插件安装到浏览器了. 解决方案二: Jfkfkenskqkqnskwknw 解决方案三: 我也想知道这个问题的 解决方案四: 直接做成cs,然后可能需要嵌入式. 解决方案五: 用socket套接字实现上传协议(比如http上传的put协议) 解决方

mvc file控件无刷新异步上传操作源码_实用技巧

前言 上传文件应该是很常见必不可少的一个操作,网上也有很多提供的上传控件.今天遇到一个问题:input控件file无法进行异步无刷新上传.真真的感到别扭.所以就尝试这去处理了一下.主要分三个部分:上传类的封装,html input控件file处理和后台controller的调用. 上传封装类: 此类主要两个功能,一些简单的筛选和文件重命名操作. 文件的筛选包括: 文件类型,文件大小 重命名: 其中默认为不进行重命名操作,其中重命名默认为时间字符串DateTime.Now.ToString("yy

关于Fckeditor2.6版本控件上传文件无法连接打开的问题

问题描述 主题:关于Fckeditor2.6版本控件上传文件无法连接打开的问题运行环境:windows2000SP3+Asp.net2.0+Fckeditoe2.6已经配置为可以上传中文文件问题描述:上传的文件(例如word文档)无法通过IE打开或者下载,包括在本地服务器上都不可以打开,文件确定已经上传.但是图片可以正常显示.测试地址:http://www.czhos.com/enter_page/yiyuan_wenhua_show.aspx?sjbm=107个人观点:1.是否是windows

Asp.net中FileUpload控件上传文件例子

 代码如下 复制代码 /// <summary>使用FileUpload控件上传文件</summary>          /// <param name="page">this</param>          /// <param name="path">文件保存目录,相对路径示例:"~/UploadFile",绝对路径示例:"E:UploadFile",提示:w

使用swfupload控件上传文件的问题

问题描述 使用swfupload控件上传文件的问题 文件上传到100%的时候就卡主不再动了,希望有人能帮我解答一下

asp.net fileupload控件上传文件与多文件上传_实用技巧

1.前台文件 Default.aspx: <%@ Page Language="C#" AutoEventWireup="true"CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.