1
我正在开发导出日历的应用程序。我的问题是日历下载而不是用Outlook打开。这里是我的代码:从浏览器中打开.ics文件
1)在主网页的图片导出链接日历:
<img src="/calendar.png" width="32" Style="width: 32px; height:32px;" title="Calendar" onClick="javascript:document.getElementById('exportCal').submit();">
<form id="exportCal" action="Calendar.jsp" target="_blank" method="post">
<INPUT TYPE="hidden" ID="calendarData" NAME="calendarData" VALUE=""/>
</form>
2)在该链接重定向到JSP,我产生的.ics(使用iCal4j库)文件并将其附加到响应中:
response.setHeader ("Content-Disposition", "inline;filename=\"mycalendar.ics\"");
response.setContentType("text/calendar");
Calendar calendar = new Calendar();
calendar.getProperties().add(new ProdId("-//Ben Fortuna//iCal4j 1.0//EN"));
calendar.getProperties().add(Version.VERSION_2_0);
calendar.getProperties().add(CalScale.GREGORIAN);
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.set(java.util.Calendar.MONTH, java.util.Calendar.DECEMBER);
cal.set(java.util.Calendar.DAY_OF_MONTH, 25);
// initialise as an all-day event..
VEvent christmas = new VEvent(new Date(cal.getTime()), "Christmas Day");
// Generate a UID for the event..
UidGenerator ug = new UidGenerator("1");
christmas.getProperties().add(ug.generateUid());
calendar.getComponents().add(christmas);
System.out.println(calendar);
ServletOutputStream fout = response.getOutputStream();
CalendarOutputter outputter = new CalendarOutputter();
outputter.output(calendar, fout);
fout.flush();
然后下载.ics文件。但我真正想做的是用Outlook打开它。有没有办法做到这一点?
在此先感谢!
我知道webcal协议,但我认为它只适用于静态文件。因为为了放置这样的链接,您应该先创建(并存储)该文件,然后链接到该文件。因此,每次打开包含链接的页面时,都会生成新的日历文件(每个用户都不相同),可能会或可能不会下载。另外,我已经尝试过这种解决方案,但我不知道如何将文件保存在服务器中,以便以后可以下载。如果我错了,请纠正我,并指出我正确的方向,因为我是一个jsp新手。非常感谢!! – Neets 2012-04-19 05:39:54