让客户端从不可公开访问的路径下载文件

本文关键字:访问 路径 下载 文件 客户端 | 更新日期: 2023-09-27 18:19:11

我希望实现一种方法来保持文件的私密性,所以他们不能公开重新下载,只允许服务器端代码(像一个按钮)从一个私人目录为客户端拉他们一次。

这可能吗?

即使文件夹是公开可用的,什么是触发一个事件的好方法,使文件被下载了多少次,这样我就可以跟踪它,并使一个服务,删除他们后,他们达到下载限制?我想我可以做一个回应。重定向到文件,然后用逻辑跟踪它被下载了多少次。但你会这么做吗?

编辑:经过一番挖掘,我找到了一个解决方案。我知道你们中的许多人因为没有包括示例代码而投了反对票,但如果你能投票支持我分享我最终使用的代码,我会很感激,因为它工作得很好。
String FileName = "File.zip";
            String FilePath = "C:/Test/" + FileName; //Replace this
            System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
            response.ClearContent();
            response.Clear();
            response.ContentType = "text/plain";
            response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");
            response.TransmitFile(FilePath);
            response.Flush();
            response.End();

让客户端从不可公开访问的路径下载文件

通过asp.net通用处理程序直接将其写入响应流来提供文件。然后,您将完全控制对该文件的公共访问。

我从来没有这样做过,但我知道怎么做。

假设你的网站目录是C:'Sites'DanC'www>。外部世界会将其视为www.DanC.com或其他。

为你的下载创建一个带有链接、按钮等的网页,名为download.aspx。

你的文件不在这个目录中。你的文件在这里:C:'Sites'DanC'data>没有办法有人可以从www.DanC.com上一级进入你的data目录。

你看到了吗?

现在,每当有人激活您的下载链接(按钮等)时,您的代码将从C:'Sites'DanC'data>获取文件并将其提供给客户端。

如何向客户端提供数据的一个很好的例子是>> HERE <<

经过一番挖掘,我找到了一个解决方案。我知道你们中的许多人因为没有包括示例代码而投了反对票,但如果你能投票支持我分享我最终使用的代码,我会很感激,因为它工作得很好。

String FileName = "File.zip";
            String FilePath = "C:/Test/" + FileName; //Replace this
            System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
            response.ClearContent();
            response.Clear();
            response.ContentType = "text/plain";
            response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");
            response.TransmitFile(FilePath);
            response.Flush();
            response.End();