修改http报文头让显示图像变下载

image

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace httpHandler
{
    /// <summary>
    /// xiazai1 的摘要说明
    /// </summary>
    public class xiazai1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpeg";
            //context.Response.AddHeader("content-disposition","attachment:filename=haha.jpg");
            //或者使用下面的asp.net方式添加报文头,AddHeader是一个老的asp兼容的方法
            context.Response.AppendHeader("content-disposition", "attachment:filename=haha.jpg");
            context.Response.WriteFile("content/DSC06942.JPG");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

vs2010在项目里面新建一个一般处理程序就可以得到上面的结果,如果没有其中的AppendHeader,会直接在浏览器上没有提示的显示出这张图片.不过有点郁闷的是调整发现这个文件名老是不对,显示的是xiazai1.jpg,准确的应该是haha.jpg,和老师做的一样,结果却不同,和Web服务器有关系?还是浏览器?

查了一下资料,原来是打错了一个字符,在attachment后面应该跟上分号,而不是冒号!

如果想将haha.jpg改成中文的,需要对中文做一下编码处理,比如

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/JPEG";
            //context.Response.AddHeader("content-disposition","attachment:filename=haha.jpg");
            //或者使用下面的asp.net方式添加报文头,AddHeader是一个老的asp兼容的方法

            string filename = HttpUtility.UrlEncode("哈哈.jpg");
            context.Response.AddHeader("Content-Disposition", "attachment;filename="+filename);
            context.Response.WriteFile("content/DSC06942.JPG");
        }
image

这样就可以将服务器的一个图片或者其它文件改个名字让用户来下载了!一切尽在掌握中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值