用.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、搞定收工。(这鱼没有白吃啊)
经过上述修改,现在的上传变成了,程序指定文件大小,如果超过,则弹出错误提示。
这样一来,就好多了,最起码自己能接受了,跟用户解释也不太费劲了。

(0)

相关推荐

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

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

  • 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.

  • JavaScript判断FileUpload控件上传文件类型

    为了代码变得更加简捷,笔者使用了正则表达式来获取文件扩展名,如果读者对正则表达式不太了解或者从来没有接触过,请马上恶补一下吧!毕竟它非常重要,大多数的编程语言都支持正则表达式. 大家都知道,后台获取FileUpload扩展名方法: string ext = Path.GetExtension(fu.PostedFile.FileName); JS判断FileUpload控件上传文件的扩展名: <html xmlns="http://www.w3.org/1999/xhtml"&g

  • asp.net html控件的File控件实现多文件上传实例分享

    asp.net多文件上传使用html控件的File控件,在form中就需要加入[ enctype="multipart/form-data"]. up3.aspx文件代码 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="up3.aspx.cs" Inherits="up3" %> <!DOCTYPE ht

  • 浅谈关于Android WebView上传文件的解决方案

    我们在开发需求的时候,难免会接入一下第三方的H5页面,有些H5页面是具有上传照片的功能,Android 中的 WebView是不能直接打开文件选择弹框的 接下来我讲简单提供一下解决方案,先说一下思路 1.接收WebView打开文件选择器的通知 2.收到通知后,打开文件选择器等待用户选择需要上传的文件 3.在onActivityResult中得到用户选择的文件的Uri 4.然后把Uri传递给Html5 这样就完成了一次H5选择文件的过程,下面我把代码贴出来自习看一下 首先,WebView必须要支持

  • File文件控件,选中文件(图片,flash,视频)即立即预览显示

    我们平常用file文件控件上传文件,要预览有时会刷新页面,结果file控件被清空,好多人问能能让他不清空或重新赋值,因为处于安全性的考虑,这是不可能的.那怎么进行无刷新预览呢?这里我把我所使用的方法写一下. 选择页面:  复制代码 代码如下: <script language="javascript"> function checkData() { var fileName=document.getElementById("FileUp").value;

  • 读写XML文件的内容并将其显示在ListView控件上的方法

    XML文件由内容和标记组成.通过标记包围内容的方式将大部门内容包含在元素中[1].XML的节点便于程序配置进行灵活的扩展,特别是存在以数组格式的配置信息时,增加行或列只需要修改XML文件而无需修改源代码. 1. XML文件介绍 (1)声明 XML 文档的第一行可以是一个 XML 声明[1]这是文件的可选部分,它将文件识别为 XML 文件,有助于工具和人类识别 XML(不会误认为是 SGML 或其他标记).可以将这个声明简单地写成 <?xml?>,或包含 XML 版本<?xml versi

  • SpringMVC上传文件的三种实现方式

    SpringMVC上传文件的三种实现方式,直接上代码吧,大伙一看便知 前台: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.

  • SpringMVC上传文件FileUpload使用方法详解

    本文实例为大家分享了SpringMVC上传文件FileUpload的具体代码,供大家参考,具体内容如下 我是在已经搭建好的springMVC环境下,maven工程中的pom.xml所需要的jar包(其中spring上传文件的两个主要jar:commons-fileupload.jar和commons-io.jar): <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o

  • 通过jquery获取上传文件名称、类型和大小的实现代码

    在文件上传到服务器之前,我们可以通过jquery来获取上传文件的名称,类型和尺寸大小. 通常情况下,当用户通过<input type='file'>标签来上传文件时,我们可以看到上传文件的名称.HTML5 File API为我们提供了一种安全的方式,让我们在客户端访问计算机中的文件,并更好的对这些文件执行操作. 支持File API的浏览器有IE10+,Firefox4+,Safari5.0.5+,Opera11.1+和Chrome. File API在表单的文件输入字段的基础上,又添加了一些

随机推荐