让客户端从不可公开访问的路径下载文件
本文关键字:访问 路径 下载 文件 客户端 | 更新日期: 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();