gpt4 book ai didi

asp.net - 列出可供下载的文件 - 文件存储在仅应用程序可访问的位置

转载 作者:行者123 更新时间:2023-12-02 21:25:21 24 4
gpt4 key购买 nike

我有一组 pdf 文件存储在只能由应用程序访问的位置 - 因此无法通过 http 直接访问这些文件。

文件路径由数据库存储,当用户选择下载文件时,将执行以下代码:

 Response.ContentType = "Application/pdf"
Response.AppendHeader("Content-Disposition", "attachment; filename=<some file name>")
Response.TransmitFile(Server.MapPath("<the file path>"))
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 实现这一目标的优雅解决方案是什么?

最佳答案

对于常规 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) 操作结果。

关于asp.net - 列出可供下载的文件 - 文件存储在仅应用程序可访问的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/532379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com