Заставить браузер Sony PRS-T1 загружать файлы.epub
Встроенный браузер моего устройства для чтения электронных книг (Sony PRS-T1) почему-то не любит загружать файлы .epub.
Обычно он открывает файлы .epub, как если бы они были текстовыми файлами.
С помощью этого php-скрипта загрузки мне удалось заставить браузер загружать файлы, которые я храню на своем сервере:
<?php
$path = $_GET['path'];
$mimeType = $_GET['mimeType'];
if(!file_exists($path)) {
// File doesn't exist, output error
die('file not found');
} else {
$size = filesize($path);
$file = basename($path);
// Set headers
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=\"$file\"");
header("Content-Type: $mimeType");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $size");
// Read the file from disk
readfile($path);
}
exit();
?>
Теперь PRS-T1 загрузит файл, но по какой-то причине, я не понимаю, он изменит расширение файла с .epub на.htm - это странно.
Но, похоже, что есть способ сделать это правильно: когда я загружаю файл .epub из readbeam.com это работает так, как и ожидалось (я нашел этот намек на http://www.mobileread.com/forums/showthread.php?t=163466).
В чем разница между их конфигурацией и моей?
Вот что я выяснил с помощью firebug:
1 answers
Ваш заголовок Content-Type
не совпадает с заголовком из readbeam.
application/epub zip
!= application/epub+zip
+
, вероятно, рассматривается PHP как пробел, так как кажется, что вы передаете его через $_GET.