ASP.NET - 打开文件而不显示对话框
ASP.NET - Open file without showing dialog
我想在我的 ASP.NET 应用程序中生成一个 ICS 文件 (iCalendar),然后自动打开它而不显示文件对话框 "Open / Save / Cancel"。
此生成的文件将由这些 ics 文件的用户默认应用程序打开。
我试过这个:
String sICSPath = Server.MapPath(".") + @"\Files\Test.ics";
String sFullText = File.ReadAllText(sICSPath);
sFullText = sFullText.Replace("#NAME#", "MyName");
this.Response.ContentType = "Content-Type: text/Calendar";
this.Response.AddHeader("Cache-Control", "no-cache, must-revalidate");
this.Response.AddHeader("Pragma", "no-cache");
this.Response.AddHeader("Content-Disposition", "inline; filename=calendar.ics");
this.Response.Write(sFullText);
this.Response.End();
我尝试了其他 headers,例如 Content-Type : application/outlook
或 Content-Disposition : attachment;
而不是 Content-Disposition : inline;
....但没有成功。
此代码用于通过对话框打开 ICS。但是我会自动打开它而不显示这个对话框。
如何做到这一点?
你不能那样做。用户的浏览器设置决定了他们是看到保存对话框还是直接保存并打开。
想象一下,如果它按照您希望的那样假设工作 - 那将是一个巨大的安全漏洞。
我想在我的 ASP.NET 应用程序中生成一个 ICS 文件 (iCalendar),然后自动打开它而不显示文件对话框 "Open / Save / Cancel"。
此生成的文件将由这些 ics 文件的用户默认应用程序打开。
我试过这个:
String sICSPath = Server.MapPath(".") + @"\Files\Test.ics";
String sFullText = File.ReadAllText(sICSPath);
sFullText = sFullText.Replace("#NAME#", "MyName");
this.Response.ContentType = "Content-Type: text/Calendar";
this.Response.AddHeader("Cache-Control", "no-cache, must-revalidate");
this.Response.AddHeader("Pragma", "no-cache");
this.Response.AddHeader("Content-Disposition", "inline; filename=calendar.ics");
this.Response.Write(sFullText);
this.Response.End();
我尝试了其他 headers,例如 Content-Type : application/outlook
或 Content-Disposition : attachment;
而不是 Content-Disposition : inline;
....但没有成功。
此代码用于通过对话框打开 ICS。但是我会自动打开它而不显示这个对话框。
如何做到这一点?
你不能那样做。用户的浏览器设置决定了他们是看到保存对话框还是直接保存并打开。
想象一下,如果它按照您希望的那样假设工作 - 那将是一个巨大的安全漏洞。