强制下载.ics文件

时间:2015-05-20 22:44:56

标签: javascript jquery jquery-ui calendar

我认为我的问题非常特别。我现在正在做的是创建一个简单的事件列表,您可以点击每个事件添加到您的日历(iCal,Google日历,Live日历等)。为了达到这个目的,我正在使用addToCalentar但是在这段代码中有一些奇怪的东西。

当我选择iCal时,它假设下载一个ics文件,但插件打开一个新的浏览器选项卡显示文件本身。所有其他选项都非常好,因为他们需要在新窗口中打开。但是muy的问题是。如果用户选择“iCal”选项,我在哪里可以修改源代码以便只下载文件?

这是我的HTML:

<div class="addtocal">
    <div>01/04/2015 <span title="invite.ics"></span> </div>
</div>

这是我的插件配置:

$('.addtocal').AddToCal({
      icalEnabled:true,
      vcalEnabled:false,

      getEventDetails: function( element ) {
        var
          dtstart_element = element.find('.dtstart'), start,
          dtend_element = element.find('.dtend'), end,
          title_element = element.find('.summary'), title,
          details_element = element.find('.description'), details,
          ics_element = element.find('.ics'), ics;



        start = dtstart_element.length ? dtstart_element.attr('title') : new Date();

        if(dtend_element.length) {
          end = dtend_element.attr('title');

        } else {

          end = new Date();
          end.setTime(end.getTime() + 60 * 60 * 1000);

        }

        title = title_element.length ? title_element.html() : element.attr('id');
        details = details_element.length ? details_element.html() : element.html();

        ics = ics_element.attr('title');

        // return the required event structure
        return {
          webcalurl: null,
          icalurl: ics,
          vcalurl: null,
          start: start,
          end: end,
          title: title,
          details: details,
          location: null,
          url: null
          };
      },
    });

这是引用的插件:

https://github.com/tardate/jquery.addtocalendar/blob/master/jquery.addtocal.js

我正在处理的是更改此方法以确定item.label是否为iCal我是否可以添加<a download>...</>但是无效。

_renderItem: function( ul, item) {

      return $( "<li></li>" )
        .data( "item.addtocal", item )
        .append( $( "<a></a>" ).text( item.label ) )
        .appendTo( ul );
    },

1 个答案:

答案 0 :(得分:2)

要强制您的浏览器下载文件而不是阅读文件,您可以为其提供FileType标题,以强制下载。

如果您还没有.htaccess文件,请在您的webroot文件夹中创建一个,然后添加:

AddType application/octet-stream .ics

这将迫使浏览器下载* .ics文件而不是显示它们。