3

カレンダーをエクスポートするアプリケーションを開発しています。私が抱えている問題は、予定表が Outlook で開かれるのではなくダウンロードされることです。これが私のコードです:

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 で、(iCal4j ライブラリを使用して) .ics ファイルを生成し、応答に添付します。

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 で開くことです。それを行う方法はありますか?

前もって感謝します!!

4

1 に答える 1

2

これはブラウザ固有の動作のようです。自動ダウンロード (クロム)を回避する唯一の方法は、この SO 投稿で提案されているようにwebcalプロトコルを利用することです。Webcal は通常、静的なカレンダー アイテムではなく、動的なカレンダー サブスクリプションにのみ使用されます。ダウンロード後に ICS を開くと、Outlook で開くはずです。

<p>A <a href="webcal://mycalendar.ics">webcal ics link</a></p>
于 2012-04-18T19:02:55.610 に答える