asp.net利用ashx文件实现文件的上传功能_实用技巧

来源:脚本之家  责任编辑:小易  

Handler.ashx?引自网络.ASP.NET2.0 Person Web Site:将图片以二进制的从数据库读取在ASP.NET Person Web Site Starter Kits中,图片的是以二进制的形式存放在数据库里,微软提供的读取该图片的方式是通过handler.ashx来实现的.首先你所看到的对图片的引用都是类似如下("AlbumID")%>的形式,也就是你所看到的每一个图片都由Handler.ashx动态生成,所以在你保存你所看到的"图片"时,它的命名都是Handler.ashx.使用handler.ashx而不是handler.aspx来引用图片并不是一定的,换句话说,你可以将该文件改为handler.aspx并没有本质的区别,不过根据微软的文档,使用*.ashx作为扩展名的文档比*.aspx的文档性能高,因为它减少了控件树的生成.这是handler.ashx代码:using System;using System.Web;using System.Drawing;using System.Drawing.Imaging;using System.IO;using System.Web.Caching;using System.Data;public class MyHandle:IHttpHandler {public void ProcessRequest(HttpContext context){从数据库中取MemoryStream ms=JSZ.SQLServerDAL.TestDAL.GetImage(1);DataTable dt=JSZ.SQLServerDAL.TestDAL.GetTable(1);Byte[]image=(Byte[])dt.Rows[0]["Photo"];MemoryStream ms=new MemoryStream(image,0,image.Length);if(ms!null){取得图像MemoryStream大小int bufferSize=(int)ms.Length;建立 bufferbyte[]buffer=new byte[bufferSize];调用MemoryStream.Read,自MemoryStream 读取至buffer,并返回countint countSize=ms.Read(buffer,0,bufferSize);返回图像buffercontext.Response.OutputStream.Write(buffer,0,countSize);}}public bool IsReusable {get {return false;}}}www.zgxue.com防采集请勿采集本网。

原来以为文件上传是一个比较简单的功能,结果搞了一个晚上才搞定~这里主要介绍两种方法实现。

aspx中怎么做,就怎么做啊 public class Handler1:IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType=\"text/plain;context.Response.Write(\"Hello World\")

方法一:Form表单提交

这个handler.ashx有点像java中的servlet,是个很轻量级的http请求处理程序。它的作用就是用来处理请求的,实际上它就是一个实现了IHttpHandler的类,当客户端请求某个.ashx时,会产生.ashx所对应类的实例

html代码:

将:data:$.toJSON(userinfo),改为:data:{user:$.toJSON(userinfo)} 在ashx中: var json=context.Request.Form[\"user\"];JavaScriptSerializer serializer=new JavaScriptSerializer();var userInfo=

<!DOCTYPE html><html><head> <meta charset="utf-8" /> <title>上传文件</title> <script src="Scripts/jquery-1.11.3.min.js"></script></head><body> <form action="UploadHandler.ashx" method="post" enctype="multipart/form-data"> <input id="file_upload" name="file_upload" type="file" /> <input id="btn_upload" type="submit" value="上传" /> </form></body></html>

Response.ContentType=\"text/xml;Response.Charset=\"GB2312;Response.Write(\"?xml version=\\\"1.0\\\"encoding=\\\"GB2312\\?stringBuilder sbhtml=new stringBuilder();Response.Write(\"<pictures>

UploadHandler.ashx代码:

如:你的index.aspx中使用jquery回调ashx数据,那么在index.aspx page_load时session[\"checked\"]=\"true\",在ashx中验证session是否存在。但ashx中要获取session内容还需如下几步:①导入命名空间using

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace WebApplication1{ /// <summary> /// UploadHandler 的摘要说明 /// </summary> public class UploadHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; HttpPostedFile file = context.Request.Files["file_upload"]; string filePath = context.Server.MapPath("~/UploadFiles/") + System.IO.Path.GetFileName(file.FileName); file.SaveAs(filePath); context.Response.Write("上传文件成功"); } public bool IsReusable { get { return false; } } }}

该方法虽然能够实现文件的上传,但是form表单提交之后整个页面就刷新了,如果要无刷新上传文件的话,就要使用ajax了。

方法二:jquery + ajax无刷上传

html代码:

将:data:$.toJSON(userinfo),改为:data:{user:$.toJSON(userinfo)} 在ashx中: var json=context.Request.Form[\"user\"];JavaScriptSerializer serializer=new JavaScriptSerializer();var userInfo=

<!DOCTYPE html><html><head> <meta charset="utf-8" /> <title>上传文件</title> <script src="Scripts/jquery-1.11.3.min.js"></script></head><body> <input id="file_upload" name="file_upload" type="file" /> <input id="btn_upload" type="button" value="上传" /> <script> $(document).ready(function () { $('#btn_upload').bind('click', function () { var formData = new FormData(); formData.append('upload_file', $('#file_upload')[0].files[0]); $.ajax({ url: 'UploadHandler.ashx', type: 'post', data: formData, contentType: false, processData: false, success: function (msg) { if (msg == "Yes") { alert('文件上传成功'); } else { alert('文件上传失败'); } } }) }); }); </script></body></html>

UploadHandler.ashx代码:

如:你的index.aspx中使用jquery回调ashx数据,那么在index.aspx page_load时session[\"checked\"]=\"true\",在ashx中验证session是否存在。但ashx中要获取session内容还需如下几步:①导入命名空间using

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace WebApplication1{ /// <summary> /// UploadHandler 的摘要说明 /// </summary> public class UploadHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; if (context.Request.Files.Count > 0) { HttpPostedFile file = context.Request.Files["upload_file"]; string filePath = context.Server.MapPath("~/UploadFiles/") + System.IO.Path.GetFileName(file.FileName); file.SaveAs(filePath); context.Response.Write("Yes"); } else { context.Response.Write("No"); } } public bool IsReusable { get { return false; } } }}

个人更推荐方法二,运行结果如下图所示:

dll是通过类库工程编译出来的,不能编译的原因可能是你的语法有错误或其它引用错误…提示什么错误。不行可以试一下重建类库工程内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • ashx介绍以及ashx文件与aspx文件之间的区别
  • jquery向.ashx文件post中文乱码问题的解决方法
  • jquery+ashx无刷新gridview数据显示插件(实现分页、排序、过滤功能)
  • 关于html+ashx开发中几个问题的解决方法
  • asp.net ashx中获得session的方法
  • jquery ajax,ashx,json的用法总结
  • html+ashx 表单提交示例
  • jquery ajax.ashx 高效分页实现代码
  • ashx文件的使用小结
  • 在.ashx文件中获取cookies值实现代码
  • asp.net中利用ashx实现图片防盗链的原理分析
  • 在asp.net中操作sql server数据库的一些小技巧
  • .net core dapper操作mysql数据库的实现方法
  • asp.net音频转换之.amr转.mp3(利用七牛转换法)
  • asp.net下实现输入数字的冒泡排序
  • 详解asp.net web api 之属性路由
  • asp.net中上传并读取excel文件数据示例
  • asp.net导出word实例
  • aspx不显示viewstate的实例
  • ajax实现评论中顶和踩功能的实例代码
  • ado调用分页查询存储过程的实例讲解
  • 在asp.net中如编译把ashx文件
  • asp.net问题ashx文件有什么用
  • 怎样在asp.net中用一般处理文件ashx实现下载功能
  • asp.net,我请求.ashx文件,为什么加个文件夹就运行不成功了?
  • asp.net ashx文件中如何获得用户的profile
  • 在asp.net中handler.ashx文件有何作用?
  • asp.net ashx后台文件如何获得josn数据
  • asp.net 的ashx文件中 输出表或者数组
  • asp.net中ashx文件如何调用session
  • asp.net我在登录时ajax异步调用一个.ashx文件,然后在调用一个普通类文件sqlheper,不经过页面类。
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.net实用技巧ashx介绍以及ashx文件与aspx文件之间的区别jquery向.ashx文件post中文乱码问题的解决方法jquery+ashx无刷新gridview数据显示插件(实现分页、排序、过滤功能)关于html+ashx开发中几个问题的解决方法asp.net ashx中获得session的方法jquery ajax,ashx,json的用法总结html+ashx 表单提交示例jquery ajax.ashx 高效分页实现代码ashx文件的使用小结在.ashx文件中获取cookies值实现代码asp.net中利用ashx实现图片防盗链的原理分析在asp.net中操作sql server数据库的一些小技巧.net core dapper操作mysql数据库的实现方法asp.net音频转换之.amr转.mp3(利用七牛转换法)asp.net下实现输入数字的冒泡排序详解asp.net web api 之属性路由asp.net中上传并读取excel文件数据示例asp.net导出word实例aspx不显示viewstate的实例ajax实现评论中顶和踩功能的实例代码ado调用分页查询存储过程的实例讲解java正则表达式 pattern和matche未将对象引用设置到对象的实例 (asp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net汉字转拼音和获取汉字首字asp.net对路径"xxxxx"从efcore上下文的使用到深入剖析di的生命visual studio 2017 针对移动开发的新特性asp.net通过分布式session提升性能dropdownlist绑定选择数据报错提示异常解asp.net 动态引用样式表代码把asp.net mvc项目部署到本地iis上的完整asp.net core mvc 过滤器的使用方法介绍asp.net动态增加html元素的方法实例小结asp.net中实现定制自己的委托和事件参数类
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved