惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
Security Archives - TechRepublic
Security Archives - TechRepublic
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
Google DeepMind News
Google DeepMind News
Vercel News
Vercel News
U
Unit 42
L
LangChain Blog
M
MIT News - Artificial intelligence
S
SegmentFault 最新的问题
月光博客
月光博客
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
博客园 - 聂微东
H
Hackread – Cybersecurity News, Data Breaches, AI and More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
Hacker News - Newest:
Hacker News - Newest: "LLM"
V2EX - 技术
V2EX - 技术
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
D
DataBreaches.Net
Hacker News: Ask HN
Hacker News: Ask HN
W
WeLiveSecurity
N
News | PayPal Newsroom
量子位
Help Net Security
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
N
News and Events Feed by Topic
Webroot Blog
Webroot Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
S
Security @ Cisco Blogs
Y
Y Combinator Blog
H
Heimdal Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Stack Overflow Blog
Stack Overflow Blog
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
P
Privacy International News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
Last Week in AI
Last Week in AI
AI
AI
Recorded Future
Recorded Future
C
Cyber Attacks, Cyber Crime and Cyber Security
Microsoft Security Blog
Microsoft Security Blog
P
Privacy & Cybersecurity Law Blog

博客园 - 陈锐

微软社区发布会总结(多图杀猫) 微软 Visual Studio 2008 社区发布全国巡展长沙站预报 让微软出钱捐助难民吧 你的博客的性别是什么? 湖南微软开发者俱乐部成立大会顺利召开 湖南微软.NET俱乐部 成立大会事宜 在VB.NET中如何使在Webbrowser中实现标签页中打开新链接 RichTextBox技巧之插入图片(转载) RichTextBox技巧之插入表格(转载) RichTextBox技巧之插入上标和下标(转载) RichTextBox技巧之显示自定义高亮显示(转载) RichTextBox技巧之插入带格式文本(转载) VB 2005的写作进度 再VB 2005的拖放式数据绑定时遇到的问题 有些问题稍微想一下就明白了 写作进度(7月30日) Charles Petzold给撰书人的建议(from 思归的博客) 运行cl.exe编译发生:没有找到 mspdb80.dll 的解决办法 在VSTO 2005下创建的Office CommandBarButton不能定义在过程内
能够下载时改名的文件权限管理
陈锐 · 2007-03-03 · via 博客园 - 陈锐

最近写代码需要实现文件权限管理,这个通过一个自定义的HttpHandler就可以实现。但是
下载文件的时候需要修改文件名,比如在服务器上存储的文件是一个类似ab739s48fssa.txt
的文件,但是用户下载看到的是readme.txt。网上查了半天,其实实现很简单,下面是实现
步骤。
首先需要在web.config终定义自定义的HttpHandler:

    <httpHandlers>
      
<add verb="*" path="Attachments/*.*" type="AttachmentHandler" />
    
</httpHandlers>

然后实现自定义的AttchmentHandler类:

Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlClient
Imports System.Diagnostics
Imports System.IO

Public Class AttachmentHandler
    
Implements IHttpHandler


    
Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable
        
Get
            
Return True
        
End Get
    
End Property


    
Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
        
'判断用户是否通过验证
        If (context.User.Identity.IsAuthenticated) Then
            
Dim splitter As String() = context.Request.FilePath.Split("/")
            
'获得用户选择下载的文件名
            Dim filename As String = splitter(UBound(splitter))
            
'获得文件全路径名
            Dim fullfilename As String = context.Server.MapPath(context.Request.FilePath)

                        
'指定用户下载时的文件名
            Dim orifilename As String = "readme.txt"
            
'获得文件类型
            Dim strContentType As String = GetFileContentType(filename)

            context.Response.ContentType 
= strContentType
            context.Response.AppendHeader(
"content-disposition""attachment;filename=" + orifilename)

            
'读取文件内容到字节数组
            Dim file As FileStream = _
                    
New FileStream(fullfilename, FileMode.Open, FileAccess.Read)
            
Dim buff(file.Length) As Byte
            file.Read(buff, 
0, buff.Length)
            
'将字节数组中的内容输出到输出缓存
            context.Response.OutputStream.Write(buff, 0, buff.Length)
        
Else
            context.Response.Redirect(
"Login.aspx")
        
End If
    
End Sub

End Class

实现文件改名的关键就是在Response头部加入:
context.Response.AppendHeader("content-disposition", "attachment;filename=" + orifilename)
其中orifilename就是想让用户看到的文件名。