当前位置:  开发笔记 > 后端 > 正文

列出可供下载的文件 - 文件存储在应用程序只能访问的位置

如何解决《列出可供下载的文件-文件存储在应用程序只能访问的位置》经验,为你挑选了1个好方法。

我有一组pdf文件存储在只能由应用程序访问的位置 - 所以这些文件不能直接通过http访问.

文件路径由数据库存储,当给予用户下载文件的选项时,正在执行以下代码:

 Response.ContentType = "Application/pdf"
 Response.AppendHeader("Content-Disposition", "attachment; filename=")
 Response.TransmitFile(Server.MapPath(""))
 Response.End()

如果我处理单个文件,一切正常

问题:

我有一个存储过程,返回用户可供下载的所有文件的列表,它可以返回任意数量的文件,范围从1到20.

我想创建一个页面,列出所有这些文件以及每个文件旁边的下载选项.

就像是

File name 1, some description 1, download (button, link?)
File name 2, some description 2, download (button, link?)

它不能只是一个url链接,因为正如我所提到的,文件不能直接访问,并且每次下载都需要执行一些代码

使用.net2.0实现这一目标的优雅解决方案是什么?



1> Marc Gravell..:

使用常规ASP.NET(2.0),您可能希望创建一个"处理程序".最简单的选择是添加"通用处理程序"(ashx)模板 - 然后在页面上放置常规链接(例如)"download.ashx?id = 2".

在处理程序内部,解析查询字符串,并将文件流式传输给用户:

    public void ProcessRequest(HttpContext context)
    {
        // set headers...
        string filePath = FindPath(context.Request.QueryString("id"));
        context.Response.WriteFile(filePath);
    }

其中FindPath从查询字符串链接解析物理文件.

如果这是ASP.NET MVC,您可以使用File(path)action-result.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有