- 浏览: 436728 次
- 性别:
- 来自: 唐山
文章分类
最新评论
-
hautbbs:
谢谢分享!
ASP.NET 导出Excel 和csv -
hautbbs:
感谢分享!
ASP.NET 导出Excel乱码的终极解决 -
wyf:
zcl920 写道只能说 看不懂。要发就发全 取一段出来 有什 ...
图片上绘制文字换行处理 -
zcl920:
只能说 看不懂。要发就发全 取一段出来 有什么用。
图片上绘制文字换行处理 -
380086154:
有用,谢谢。
js比较日期
1. 首先新建一个用于下载文件的page页,如download.aspx,里面什么东西也没有。
2. 添加一个DownloadHandler类,它继承于IHttpHandler接口,可以用来自定义HTTP 处理程序同步处理HTTP的请求。
using System.Web; using System; using System.IO; public class DownloadHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { HttpResponse Response = context.Response; HttpRequest Request = context.Request; System.IO.Stream iStream = null; byte[] buffer = new Byte[10240]; int length; long dataToRead; try { string filename = FileHelper.Decrypt(Request["fn"]); //通过解密得到文件名 string filepath = HttpContext.Current.Server.MapPath("~/") + "files/" + filename; //待下载的文件路径 iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read); Response.Clear(); dataToRead = iStream.Length; long p = 0; if (Request.Headers["Range"] != null) { Response.StatusCode = 206; p = long.Parse(Request.Headers["Range"].Replace("bytes=", "").Replace("-", "")); } if (p != 0) { Response.AddHeader("Content-Range", "bytes " + p.ToString() + "-" + ((long) (dataToRead - 1)).ToString() + "/" + dataToRead.ToString()); } Response.AddHeader("Content-Length", ((long) (dataToRead - p)).ToString()); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(System.Text.Encoding.GetEncoding(65001).GetBytes(Path.GetFileName(filename)))); iStream.Position = p; dataToRead = dataToRead - p; while (dataToRead > 0) { if (Response.IsClientConnected) { length = iStream.Read(buffer, 0, 10240); Response.OutputStream.Write(buffer, 0, length); Response.Flush(); buffer = new Byte[10240]; dataToRead = dataToRead - length; } else { dataToRead = -1; } } } catch (Exception ex) { Response.Write("Error : " + ex.Message); } finally { if (iStream != null) { iStream.Close(); } Response.End(); } } public bool IsReusable { get { return true; } } }
3. 这里涉及到一个文件名加解密的问题,是为了防止文件具体名称暴露在状态栏中,所以添加一个FileHelper类,代码如下:
public class FileHelper { public static string Encrypt(string filename) { byte[] buffer = HttpContext.Current.Request.ContentEncoding.GetBytes(filename); return HttpUtility.UrlEncode(Convert.ToBase64String(buffer)); } public static string Decrypt(string encryptfilename) { byte[] buffer = Convert.FromBase64String(encryptfilename); return HttpContext.Current.Request.ContentEncoding.GetString(buffer); } }利用Base64码对文件名进行加解密处理。
4. 在Web.config上,添加httpHandlers结点,如下:
<system.web> <httpHandlers> <add verb="*" path="download.aspx" type="DownloadHandler" /> </httpHandlers> </system.web>5. 现在新建一个aspx页面,对文件进行下载:
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.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>文件下载</title> </head> <body> <form id="form1" runat="server"> <div> <asp:HyperLink ID="link" runat="server" Text="文件下载"></asp:HyperLink> </div> </form> </body> </html>
Default.aspx.cs代码如下:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string url = FileHelper.Encrypt("DesignPattern.chm"); link.NavigateUrl = "~/download.aspx?fn=" + url; } }这样就实现了文件下载时,不管是什么格式的文件,都能够弹出打开/保存窗口。
发表评论
-
登录时记住用户名密码的实现方式
2019-06-12 15:11 3039登录的时候记住用户 ... -
CAS 实现单点登录 .NET MVC
2016-05-24 17:14 1133http://www.cnblogs.com/woxpp/p ... -
.NET开发邮件发送功能的全面教程(含邮件组件源码)
2015-03-31 09:43 1174原文地址:http://www.cnblogs.com/he ... -
开发Web组合
2015-01-04 11:39 6141、数据库操作 ORM-Dapper 2、前台界面布局采 ... -
基于 Bootstrap 构建的网站
2014-12-14 14:12 640文档,下载地址:http://v3.bootcss.com ... -
iis8 默认不支持svc解决方法
2014-09-18 18:57 782以下内容对于使用WIN2012 部署V9的时候使用。 ... -
C# 连接Oracle(利用ODP.net,不安装oracle客户端)
2014-07-11 09:37 1698C# 连接Oracle(利用ODP.net,不安装oracl ... -
C# Attribute 特性,过期特性
2014-05-27 15:18 1852通过下列过程将属性应用到代码元素。 通过从 .NE ... -
.NET画实时直方图
2011-12-30 09:37 922using System; using System.Col ... -
设置combobx选中项
2011-12-21 15:20 1036cbRole.SelectedIndex = cbRole.I ... -
文档树状结构化目录管理方法
2011-12-20 09:50 2199本文适用于附件(各类文档、图片和压缩包等,下同)比较多的 ... -
.StringTemplate替换模板
2011-11-03 10:19 1251官方下载 www.StringTemplate. ... -
WCF-IErrorHandler
2011-10-11 16:30 1058使用 IErrorHandler 接口,我们可以更深入地 ... -
ADODB.Stream instead of Scripting.FileSystemObject.
2011-07-04 08:55 1247In a Silverlight 4 OOB App (eve ... -
Scripting.FileSystemObject对象的详细技巧指南
2011-07-03 23:39 1052Scripting.FileSystemObject对象的 ... -
Stream 和 byte[] 之间的转换
2011-07-02 16:52 1078/* - - - - - - - - - - - - - ... -
常用正则表达式
2011-06-15 20:17 798正则表达式用于字符 ... -
DynamicMethod 类
2011-05-11 22:51 1165public delegate String MyMetho ... -
一个通用的快速反射方法(A General Fast Method Invoker)
2011-04-13 22:01 1530普通反射方法 MethodInfo methodIn ... -
C#操作IIS(转)可以写一个工具自己配置网站
2011-03-24 21:08 2271using System; using System.Dir ...
相关推荐
通过这种方式,我们利用IHttpHandler实现了URL重写功能。这种方法的优点在于其灵活性,可以根据具体需求定制复杂的重写规则。然而,对于更复杂的网站,可能需要使用如Microsoft的URL重写模块或第三方库如IIS URL ...
ASP.NET 实现文件上传功能 本文主要介绍如何使用 ASP.NET 实现文件上传功能,包括两种方法:Form 表单提交和 jQuery + AJAX 无刷新上传。 方法一:Form 表单提交 在 ASP.NET 中,可以使用 Form 表单提交实现文件...
通过实现`IHttpHandler`接口,你可以编写自己的处理程序,处理特定类型的HTTP请求,比如动态生成图片、处理文件上传或执行任何自定义逻辑。在本Demo中,`IHttpHandler`可能被用来接收和响应来自客户端(例如,使用`...
现在,我们来详细探讨如何利用这些技术实现文件上传功能。 首先,我们需要创建一个HTML表单,用户可以通过这个表单选择文件进行上传。表单通常包含一个`<input>`元素,其`type`属性设置为`file`,以便用户能够选择...
"Ajax+HTML+ASHX实现文件异步上传"的方案就是一种实现方式,下面将详细介绍这一技术栈的工作原理和实现步骤。 首先,我们要理解Ajax(Asynchronous JavaScript and XML)的核心理念,即在不刷新整个页面的情况下与...
在本实例中,我们将探讨如何利用 ASP.NET 继承 `IHttpHandler` 接口为网站图片添加水印功能。`IHttpHandler` 是 ASP.NET 中的核心接口,它允许自定义 HTTP 处理逻辑,以处理特定类型的请求。 首先,我们创建一个名...
在ASP.NET中,实现文件上传功能是Web应用中常见的需求,可以用来允许用户上传图片、文档等文件到服务器。本文将详细介绍如何利用ASHX(HTTP Handler)文件来处理文件上传,包括两种不同的方法:传统的表单提交和使用...
在 Img.ashx 文件中,我们需要实现 IHttpHandler 接口,重写 ProcessRequest 方法来处理图片请求。以下是一个简单的示例代码: ```csharp using System; using System.Web; public class Img : IHttpHandler ...
SWFUpload 是一款开源的JavaScript库,专门用于在网页上实现文件的多选上传,并且支持显示上传进度条,为用户提供更好的交互体验。在这个实例中,我们将探讨如何在VS2012环境下,使用.NET Framework 4.0开发一个基于...
本文将详细介绍如何利用C#实现这一功能,并结合提供的部分代码示例进行深入解析。 #### 一、背景介绍 在实际应用中,上传文件的功能可以通过多种方式实现,例如使用ASP.NET WebService、Web API 或者 ASP.NET 页面...
在这个“ashx上传文件”的示例中,我们将会探讨如何使用ASHX来实现文件上传功能,以及与之相关的前端ASP.NET(ASPx)页面交互。 **一、ASHX文件上传基础** 1. **HTTP Handler (ASHX)**:ASHX是.NET Framework中的...
jQuery Uploadify是一个开源的jQuery插件,它利用Flash技术实现了跨浏览器的多文件上传功能。Flash的广泛兼容性确保了即使在不支持HTML5的浏览器中也能实现多文件上传。然而,需要注意的是,随着HTML5的普及,Flash...
通过以上步骤,我们可以利用HttpHandler成功实现网站的伪静态,从而提升网站的搜索引擎可见性和用户体验。在实际项目中,可能还需要结合其他技术,如缓存策略、数据库查询优化等,以进一步提高性能和效率。在提供的...
首先,jQueryUploadify是jQuery的一个插件,它允许用户通过简单的配置实现文件的批量上传。Uploadify提供了一种友好的用户界面,可以实时显示上传进度,同时支持多种文件类型的选择和限制上传大小,极大地优化了用户...
在本实例中,“利用HttpHander生成HTML页”是指通过自定义的HttpHandler实现URL重写功能,并根据用户访问的动态页面(如6.aspx)生成对应的静态HTML文件。这种方法可以提高网站性能,因为静态HTML文件比动态生成的...
在本例中,我们探讨的是如何利用C#和IHttpHandler接口来实现图片的水印效果。IHttpHandler接口是ASP.NET中一个关键组件,它允许开发者自定义HTTP处理程序,以处理特定类型的请求。下面我们将详细讨论这一主题。 ...
本文将详细介绍如何利用Flex中的`FileReference`类结合ASP.NET中的`HttpHandler`来实现文件的上传和下载功能。我们将从Flex客户端的角度出发,探讨如何设置监听事件、处理文件选择及上传过程,并在最后实现与服务器...
在这个示例中,我们将利用ASP.NET的HTTP处理器(HttpHandler)来实现图片防盗链功能。 HTTP处理器是ASP.NET中处理HTTP请求的核心组件,它们是IHttpHandler接口的实现。通过自定义HTTP处理器,我们可以拦截每个HTTP...
在C#中实现文件上传功能,通常是在Web应用程序中,如ASP.NET MVC框架下进行的。本示例中,开发者利用了MVC、Entity Framework(EF)以及LigerUI前端库来创建一个简单的文件上传系统。以下是实现这一功能的关键步骤和...
ASP.NET多文件上传是Web开发中...总结来说,ASP.NET多文件上传利用jQuery和Uploadify插件可以方便地实现,但同时也需要注意服务器端的处理和安全性问题。通过以上步骤,你应该能够理解并实现一个基本的多文件上传功能。