【问题标题】:Importing an *.ics/Calendar event into a blackberry calendar将 *.ics/Calendar 事件导入黑莓日历
【发布时间】:2012-09-10 20:37:26
【问题描述】:

我正在用 PHP 创建一个 ics 日历事件/约会。创建活动后,即可通过超链接下载和导入:

     $icsFilename=sprintf("calTruthUniversal%dFile.ics",$randNum);

     $fp = fopen($icsFilename, 'w');
     fwrite($fp, 'BEGIN:VCALENDAR'."\r\n");
     fwrite($fp, "PRODID:-//Truth Universal, LLC//Truth Universal Calendar 70.9054//EN\r\n");
     fwrite($fp, "VERSION:2.0\r\n");
     fwrite($fp, "CALSCALE:GREGORIAN\r\n");
     fwrite($fp, "METHOD:REQUEST\r\n");
     fwrite($fp, "BEGIN:VEVENT\r\n");
     fwrite($fp, "DTSTART:".$dtstart."\r\n");
     fwrite($fp, "DTEND:".$dtend."\r\n");
     fwrite($fp, "ORGANIZER;CN=truthuniversal@yahoo.com:mailto:truthuniversal@yahoo.com\r\n");
     fwrite($fp, "DESCRIPTION:".$description."\r\n");
     fwrite($fp, "LOCATION:".$c_address."\r\n");
     fwrite($fp, "SUMMARY:".$c_event."\r\n");
     fwrite($fp, "END:VEVENT\r\n");
     fwrite($fp, "END:VCALENDAR\r\n");
     fclose($fp);
      //echo "<br>";
      //echo "<hr>";

     echo"<a href=\"download.php?icsFile=".$icsFilename."\"><img src=\"../images/icon_cal.png\" border=\"0\"></a><br><br>";

脚本 download.php 设置 headers/content-type 并流式传输文件以供下载:

      <?php

      $myFile = $_GET['icsFile'];

      $size=filesize($myFile);

      header("Content-Type: text/calendar; charset=utf-8");
      header("Content-Disposition: attachement; filename=".$myFile);
      header("Content-Length: ".$size);
      header("Content-Transfer-Encoding: binary");

      $fh = @fopen($myFile, 'rb');
      $theData = fread($fh, $size);
      fclose($fh);

      echo $theData;
      ?>

在 iPhone 和 Android 手机上通过超链接下载 ics 文件时,它会被导入手机的日历中。然而,黑莓并没有这样做。它下载文件,但仅在显示此警报后:“无法显示您选择的项目。您要保存该项目吗?”它没有将文件导入日历。

我什至尝试将 Content-Type 更改为“application/x-rimcalendarevent”,但无济于事。

有人有解决办法吗?!?

沮丧,

乌贾西里

【问题讨论】:

  • 不错的代码。我特别喜欢您允许恶意用户窃取服务器上他们知道路径名的 ANY 文件的方式。我希望你喜欢你的 /etc/passwd 文件漂浮在互联网上。
  • @MarcB 你在说什么?你有我的 /etc/passwd 文件吗?作为一个代码势利小人,这就是你获得声誉的方式吗?我没有要求您对代码进行评论。如果您没有答案,请不要浪费我的时间。
  • 不,但我的意思是,如果您将此代码投入生产,远程用户可以使用它在您的服务器上下载任何文件。将其视为您正在编写高度不安全的代码的警告。
  • @MarcB 好的,我很感激。你可以保持讽刺。你有什么建议吗?如果我的子目录有 400 之类的权限模式,他们怎么能访问服务器上的任何文件?

标签: php blackberry calendar icalendar


【解决方案1】:


我遇到了同样的问题。
我所做的是用黑莓生成了一个事件并将其发回给我。这样我就有了一个“正确”的文件。我发现有几个不同之处,但解决问题的是文件的结尾。我不得不在 ics 文件的末尾再添加两三个空行。

类似:

fwrite($fp, "END:VCALENDAR\r\n");
fwrite($fp, "\r\n\r\n\r\n");
fclose(4fp);

为我工作。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2011-07-05
    • 2019-01-21
    • 2011-11-06
    • 1970-01-01
    相关资源
    最近更新 更多