php - 如何在不使用 echo / print 的情况下下载 PHP 生成的 ics 文件
问题描述
我正在 PHP 上创建一些事件,我想下载一个包含这几个事件的 .ics 文件,以便稍后将它们上传到我的例如 Outlook 日历中。最后使用“print”或“echo”可以正常工作,但是在将要使用的平台上,我不允许使用这两个功能。还有另一种输出此事件数据的方法吗?
到目前为止我所做的是,
$code = "BEGIN:VCALENDAR\n";
$code .= "VERSION:2.0\n";
$code .= "METHOD:PUBLISH\n";
$code .= "BEGIN:VEVENT\n";
$code .= "DTSTART:" . date("Ymd\THis\Z", strtotime($start_date_time)) . "\n";
$code .= "DTEND:" . date("Ymd\THis\Z", strtotime($end_date_time)) . "\n";
$code .= "LOCATION:" . $location . "\n";
$code .= "TRANSP: OPAQUE\n";
$code .= "SEQUENCE:0\n";
$code .= "UID:\nDTSTAMP:" . date("Ymd\THis\Z") . "\n";
$code .= "SUMMARY:" . $event['summary'] . "\n";
$code .= "DESCRIPTION:" . $event['description'] . "\n";
$code .= "PRIORITY:1\n";
$code .= "CLASS:PUBLIC\n";
$code .= "BEGIN:VALARM\n";
$code .= "TRIGGER:-PT10080M\n";
$code .= "ACTION:DISPLAY\n";
$code .= "DESCRIPTION:Reminder\n";
$code .= "End:VALARM\n";
$code .= "End:VEVENT\n";
$code .= "End:VCALENDAR\n";
header('Content-type:text/calendar');
header("Content-Description: File Download");
header('Content-Disposition: attachment; filename="events.ics"');
header("Content-Type: application/force-download");
header('Connection: close');
print $code;
```
解决方案
由于框架构建器正在处理输出,我所需要的只是将部分 $code 分配给正在输出的变量。
如果将来有人需要这样做,您关于使用打印或回显或下载文件的所有答案都是正确的。
推荐阅读
- c# - 将值从 DateTime 分配给可为空的 DateTime 总是给出种类“未指定”而不是“Utc”
- python-3.x - 为什么在单元测试中列出 value 而不是 str?
- java - 尽管实现了“getColumnClass”,但 JTable 显示 true/false 而不是 CheckBox
- ios - 升级到 Xcode 10.2.1 后部署错误
- angular - 如何将数组值传递给html?
- php - 用于将旧 Drupal 项目设置(.yml 文件)导出到新项目的自定义 Drush 命令
- java - 转义表达式:反斜杠
- ubuntu - eBPF / XDP 无法在 Ubuntu 16.04.6 上编译
- html - 从花括号调用定义在脚本标签内的函数
- postgresql - NpgsqlException:错误:22P02:json 类型的输入语法无效