在使用Html+ashx处理文件上传时,遇到上传文件超过4M的问题,首先HTML代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
</head>
<body>
<div>
单文件上传
<form enctype="multipart/form-data" method="post" action="UpLoadHandler.ashx">
<input type="file" name="files" />
<input type="submit" value="上传" />
</form>
</div> <div>
多文件上传
<form enctype="multipart/form-data" method="post" action="UpLoadHandler.ashx">
<input type="file" name="files" multiple />
<input type="submit" value="上传" />
</form>
</div>
</body>
</html>

一般处理程序UpLoadHandler.ashx的代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web; namespace Zhong.Web
{
/// <summary>
/// UpLoadHandler 的摘要说明
/// </summary>
public class UpLoadHandler : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//获取所有的上传文件
//如果上传的文件超过了4M,则会报异常[超过了最大请求长度。],需要在Web.config配置
HttpFileCollection hfc = context.Request.Files;
//如果是hfc.Count为0,则可以认为是直接请求该ashx处理程序
for (int i = ; i < hfc.Count; i++)
{
HttpPostedFile hpf = hfc[i];
if (hpf.ContentLength > )
{
//大小限制
int maxSize = * * ; //最大是2M(转换为字节)
if (hpf.ContentLength > maxSize)
{
context.Response.Write("上传文件大小超出限制");
return;
}
//扩展名限制
string[] exts = { "image/jpg", "image/jpeg", "image/gif", "image/png" };
if (!exts.Contains(hpf.ContentType.ToLower()))
{
context.Response.Write("必须上传图片文件");
return;
}
string fileName = Path.GetFileName(hpf.FileName);
hpf.SaveAs(context.Server.MapPath("~/UpLoad/" + fileName));
}
} ////获取指定name的文件上传
////该方式如果是html5的<input type="file" name="files" multiple />则始终是获取第一个上传的文件,multiple
////是支持多个文件上传,所以如果上传文件多于一个,则会丢失
//HttpPostedFile hpf = context.Request.Files["files"];
//if (hpf!= null && hpf.ContentLength > 0)
//{
// hpf.SaveAs(context.Server.MapPath("~/UpLoad/" + Path.GetFileName(hpf.FileName)));
//}
context.Response.Write("上传成功");
} public bool IsReusable
{
get
{
return false;
}
}
}
}

在上传一个超过4M的文件时,异常如下:

这时可以通过配置web.config修改文件上传的大小限制。

<?xml version="1.0" encoding="utf-8"?>

<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
--> <configuration>
<system.web>
<!--maxRequestLength的单位是kb,最大不能超过2097151 Kb即4GB,executionTimeout执行超时,单位是秒-->
<httpRuntime maxRequestLength="2097151" executionTimeout="600"/>
<compilation debug="true" targetFramework="4.0" />
</system.web> </configuration>

此处增加了一行<httpRuntime maxRequestLength="2097151" executionTimeout="600"/>

asp.net 一般处理程序接收上传文件的问题的更多相关文章

  1. asp dotnet core 支持客户端上传文件

    本文告诉大家如何在 asp dotnet core 支持客户端上传文件 新建一个 asp dotnet core 程序,创建一个新的类,用于给客户端上传文件的信息 public class Kanaj ...

  2. Spring Boot 在接收上传文件时,文件过大异常处理问题

    Spring Boot 在接收上传文件时,文件过大时,或者请求过大,spring内部处理都会抛出异常,并且捕获不到. 虽然可以通过调节配置,增大 请求的限制值. 但是还是不太方便. 之所以捕获不到异常 ...

  3. asp.net中FileUpload得到上传文件的完整路径

    asp.net中FileUpload得到上传文件的完整路径 Response.Write("完整路径:" + Server.MapPath(FileUpload1.PostedFi ...

  4. ASP.NET MVC 4 批量上传文件

    上传文件的经典写法: <form id="uploadform" action="/Home/UploadFile" method="post& ...

  5. ASP.NET MVC 4 Ajax上传文件

    这两天一直纠结着表单的问题.想在一个表单里实现三个功能: 输入查询条件,点击查询: 导出查询数据: 上传文件: 方法有很多,乱花渐欲迷人眼,尝试了很多,无果.大致说的是,给不同按钮写js代码,在js代 ...

  6. Java Servlet 接收上传文件

    在Java中使用 Servlet 来接收用户上传的文件,需要用到两个apache包,分别是 commons-fileupload 和 commons-io 包: 如果直接在doPost中,使用requ ...

  7. asp.net Mvc 使用uploadify 上传文件 HTTP 302 Error

    CSHTML代码 @{ if (Request.Cookies[FormsAuthentication.FormsCookieName] != null) { <input type=" ...

  8. ASP.NET Core MVC如何上传文件及处理大文件上传

    用文件模型绑定接口:IFormFile (小文件上传) 当你使用IFormFile接口来上传文件的时候,一定要注意,IFormFile会将一个Http请求中的所有文件都读取到服务器内存后,才会触发AS ...

  9. spring无法接收上传文件

    现象 前端用ajax方式提交表单,代码类似于下面的例子. var formData = new FormData(); // HTML 文件类型input,由用户选择 formData.append( ...

随机推荐

  1. jquery插件开发的demo

    (function ($) { $.fn.extend({ "highLight": function (options) { //检测用户传进来的参数是否合法 if (!isVa ...

  2. Django 模板中 变量 过滤器 标签 的使用方法

    一.变量       1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量.    2.使用dot(.)能够访问变量的属性    3.当模板引擎碰到dot的 ...

  3. kendo UI 入门

    Kendo UI 是一套前端开发宽假,意为日本的“剑道” 首先到官方网站下载最新的30天试用版,地址为:http://www.telerik.com/download/kendo-ui 需要简单注册一 ...

  4. spring中获取applicationContext(2)

    前几天写web项目的时候,用到了spring mvc. 但是又写bean.我要在代码里面生成,而这个bean里面,又有一些属性是通过spring注入的. 所以,只能通过ApplicationConte ...

  5. Fiddler——PC上实现手机的抓包(转载 http://www.jianshu.com/p/13f8a81d7c7c)

    Fiddler是15年初,在千牛中做超级促销插件时,发现没有root的Android机和没有越狱的iPhone无法修改host,因此没办法测试.为了让我这个磨人的PD也能看到,开发推荐了Fiddler ...

  6. centos6.5下yum安装mysql5.5

    第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了mysql5.1,那就开始卸载咯 2 接下来就是卸载mysql5.1了,命令:rpm -e ...

  7. [转]UI-Grid HeaderCellClass

    本文转自:http://blog.csdn.net/vesong87/article/details/69230476 原文: 115 HeaderCellClass 在columnDef中可以为每个 ...

  8. BG.Hadoop.Master

    1. 安装JDK JDK安装包复制到/opt文件夹 cd /opt rpm -ivh jdk-8u121-linux-x64.rpm vim /etc/profile 增加 JAVA_HOME=/us ...

  9. HTML常用的标签中,行内元素和块级元素

    块元素(block element) HTML标签分类明细 * address - 地址 * blockquote - 块引用 * center - 举中对齐块 * dir - 目录列表 * div ...

  10. Eclipse软件使用说明

    http://www.ziqiangxuetang.com/eclipse/eclipse-explore-menus.html