2

我的电子书阅读器(Sony PRS-T1)的内置浏览器不喜欢下载 .epub 文件。

通常它会像打开文本文件一样打开 .epub 文件。

使用这个 php-download-script 我设法强制浏览器下载我存储在服务器上的文件:

<?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 - 这很奇怪。

但似乎有一种方法可以做到这一点:当我从readbeam.com下载一个 .epub 文件时,它就像预期的那样工作(我在http://www.mobileread.com/forums/showthread.php找到了这个提示?t=163466 )。

是什么,使他们的配置和我的配置有所不同?

这是我使用萤火虫发现的:

http://tinypic.com/r/vzzkzp/5 阅读光束

http://tinypic.com/r/2h7pbth/5 矿

4

1 回答 1

2

您的Content-Type标题与 readbeam 中的标题不匹配。

application/epub zip!=application/epub+zip

PHP 可能将+其视为一个空格,因为您似乎是通过 $_GET 传递它的。

于 2012-04-10T16:59:44.947 回答