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