Заставить браузер 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:

Http://tinypic.com/r/vzzkzp/5 readbeam

Http://tinypic.com/r/2h7pbth/5 mine

Author: speendo, 2012-04-10

1 answers

Ваш заголовок Content-Type не совпадает с заголовком из readbeam.

application/epub zip != application/epub+zip

+, вероятно, рассматривается PHP как пробел, так как кажется, что вы передаете его через $_GET.

 2
Author: cOle2, 2012-04-10 16:59:44