我需要流式传输一个文件,以便在浏览器中弹出“另存为”对话框。
问题在于,该文件所在的目录是虚拟映射的,因此我无法使用Server.MapPath确定它的实际位置。该目录与网站不在同一位置(甚至不在实际服务器上)。
我希望有类似以下的方案,但可以传递web URL而不是服务器文件路径。
我可能最终不得不通过配置基路径来构建我的文件路径,然后附加其余路径,但希望能以这种方式完成。
var filePath = Server.MapPath(DOCUMENT_PATH);
if (!File.Exists(filePath))
return;
var fileInfo = new System.IO.FileInfo(filePath);
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", filePath));
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.WriteFile(filePath);
Response.End();