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

推荐订阅源

S
Secure Thoughts
S
Securelist
P
Proofpoint News Feed
D
DataBreaches.Net
Cisco Talos Blog
Cisco Talos Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Project Zero
Project Zero
A
About on SuperTechFans
罗磊的独立博客
WordPress大学
WordPress大学
月光博客
月光博客
Latest news
Latest news
C
Cyber Attacks, Cyber Crime and Cyber Security
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 三生石上(FineUI控件)
F
Fortinet All Blogs
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
V
Visual Studio Blog
Blog — PlanetScale
Blog — PlanetScale
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Privacy International News Feed
AI
AI
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence
Help Net Security
Help Net Security
T
Tor Project blog
V
Vulnerabilities – Threatpost
C
Cisco Blogs
I
Intezer
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MyScale Blog
MyScale Blog
雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
Forbes - Security
Forbes - Security
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
T
Threat Research - Cisco Blogs
B
Blog RSS Feed
博客园 - 叶小钗
N
News and Events Feed by Topic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Simon Willison's Weblog
Simon Willison's Weblog
C
CERT Recently Published Vulnerability Notes
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
N
News and Events Feed by Topic

博客园 - 陈锐

微软社区发布会总结(多图杀猫) 微软 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就是想让用户看到的文件名。