asp.net隐藏下载

时间:2012-08-28 16:52:09

标签: c# jquery asp.net

我正在制作一个编辑mp3文件的应用程序。编辑完成后,我想提供一个下载文件的链接。我只担心文件位置(如果已知)可能会被滥用于非法文件。我需要做什么,而不是提供到服务器上的文件的链接,我可以将其存储在内存中(我已经使用taglib),然后流式下载而不将其存储在服务器上。

1 个答案:

答案 0 :(得分:2)

您需要使用HTTP处理程序将文件写入用户,同时屏蔽服务器上文件的真实位置。这将使您能够执行有关下载文件的任何规则,例如一次性下载。

请参阅:How to create an HTTP Handler

处理程序中的代码需要根据您的需要而独特,但以下几行中的代码应该有所帮助:

public void ProcessRequest(HttpContext context)
{
   context.Response.ContentType = "Application/mp3"; 
   context.Response.AppendHeader("Content-Disposition", "attachment; filename=mysong.mp3"); 
   context.Response.TransmitFile(Server.MapPath("~/Files/song.mp3")); 
}

如果您不想在任何地方保存实际文件,可以使用Stream,但这应该可以帮助您入门。