我已經通過我的php腳本生成了一個ics文件,該文件允許我在Safari(6.0.2)中下載.ics文件,但是在Chrome(23.0 .1271.101)和Firefox(17.0.1)我收到一條錯誤消息:無法在Chrome或Firefox中下載生成的.ics文件
錯誤6(net :: ERR_FILE_NOT_FOUND):無法找到文件或目錄。
.ics文件是有效的(用兩個單獨的源檢查),我可以在iCal中打開它。我在這個論壇和其他許多論壇上都遵循了腳本和提示。
這是生成的.ics文件中的代碼:
$tz_sthlm = new DateTimeZone('Europe/Stockholm');
$tz_utc = new DateTimeZone('UTC');
$dateEvent = new DateTime($event->datetime, $tz_sthlm);
$dateEvent->setTimezone($tz_utc);
$filename = str_replace('/', '-', $event->webblink);
$output = '';
$output .= 'BEGIN:VCALENDAR' . "\r\n";
$output .= 'VERSION:2.0' . "\r\n";
$output .= 'PRODID:-//Medicinska Foreningen Orebro//Biljettbokning//SV-SE' . "\r\n";
$output .= 'METHOD:PUBLISH' . "\r\n";
$output .= 'BEGIN:VEVENT' . "\r\n";
$output .= 'CLASS:PUBLIC' . "\r\n";
$output .= 'CREATED:' . date('Ymd\THis') . "\r\n";
$description = strip_tags(htmlspecialchars_decode($event->description));
$description = str_replace(array("\n", ';'), array('\n', '\;'), $description);
$output .= 'DESCRIPTION:' . $description . "\r\n";
$output .= 'DTSTART:' . $dateEvent->format('Ymd\THis\Z') . "\r\n";
$dateEvent->modify('+4 hour');
$output .= 'DTEND:' . $dateEvent->format('Ymd\THis\Z') . "\r\n";
$output .= 'DTSTAMP:' . $dateEvent->format('Ymd\THis\Z') . "\r\n";
$output .= 'LAST-MODIFIED:' . date('Ymd\THis') . "\r\n";
$output .= 'LOCATION:' . $event->location . "\r\n";
$output .= 'UID:' . $dateEvent->format('Ymd\THis') . '-' . md5($event->title) . '@' . $_SERVER['SERVER_NAME'] . "\r\n";
$output .= 'END:VEVENT' . "\r\n";
$output .= 'END:VCALENDAR';
header("Content-Type: text/Calendar;charset=utf-8");
header('Content-Disposition: inline; filename="' . $filename . '.ics"');
/* header('Content-Transfer-Encoding: binary');
header('Expires: -1');
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Pragma: public');
header('Content-Length: ' . mb_strlen($output, '8bit'));
*/
echo $output;
exit;
這是輸出
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//My Company//SV-SE
METHOD:PUBLISH
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:20130105T000547
DESCRIPTION:This is my description.
DTSTART:20130124T170000Z
DTEND:20130124T210000Z
DTSTAMP:20130124T210000Z
LAST-MODIFIED:20130105T000547
LOCATION:Top secret
UID:[email protected]
END:VEVENT
END:VCALENDAR
在Chrome和Firefox任何想法,爲什麼我得到與錯誤訊息?
提前
你試過'內容處置:attachment',而不是'inline'?這就是'header'的PHP文檔所暗示的,我從來沒有讀過頭文件規範。 – zneak
閱讀[RFC 2183](http://www.ietf.org/rfc/rfc2183.txt),它看起來像Content-Disposition在HTTP上下文中沒有多大意義。不過,我認爲''attachment''比'inline'更有意義,因爲您希望強制下載。這就是說,我不能說這是否真的是你現在的問題。我沒有在這臺機器上測試PHP。 – zneak
不幸的是,'attachment'沒有任何區別。還是一樣的錯誤。 – wally