• ASP.NET文件下载,直接向客户端输出文件(转)


    原文地址:http://www.cnblogs.com/mrray/archive/2010/12/22/1914108.html

     默认情况文件下载,直接链接指向文件的地址即可,但是有些情况下浏览器而是直接打开了文件。例如txt文件的下载,火狐浏览器直接打开了txt文件,并不是下载了txt,txt其实被浏览器缓存了起来。

    pdf同样如此,一般电脑都安装了Adobe Reader 这个pdf的阅读器,当浏览器下载pdf的文件时候,默认依然是浏览器打开了该pdf文件 而不是下载该pdf文件。

    下面的代码就是 默认不让浏览器打开文件,而且下载文件

    Download.ashx

    <%@ WebHandler Language="C#" Class="Download" %>
    
    using System;
    using System.Web;
    using System.IO;
    
    public class Download : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/plain";
    
            string path = context.Server.UrlDecode(context.Request.QueryString["path"].ToString());
    
            string fileName = Path.GetFileName(path);//文件名
            
            string filePath = context.Server.MapPath(path);//路径
    
            if (File.Exists(filePath))
            {
                //以字符流的形式下载文件
                FileStream fs = new FileStream(filePath, FileMode.Open);
                byte[] bytes = new byte[(int)fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                context.Response.ContentType = "application/octet-stream";
                //通知浏览器下载文件而不是打开
                context.Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
                context.Response.BinaryWrite(bytes);
                context.Response.Flush();
                context.Response.End();
            }
            else
            {
                context.Response.Write("未上传文件!!");
                context.Response.End();
            }      
            
            
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }
  • 相关阅读:
    HTML5 <meta> 标签属性,所有meta用法
    C#中导出数据到Excel表格中 逗号
    .net MVC 中缓存的使用 逗号
    MVC 过滤器 逗号
    .Net 分布式技术比较 逗号
    将DataTable导出为Excel (XML Spreadsheet).
    AntiTD
    三星WP7手机MANGO一分钟完美越狱
    SPGridView 研究笔记 Part 3 分组
    Silverlight 4 Binding Cheatsheet [转]
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/2937849.html
Copyright © 2020-2023  润新知