2

The builtin browser of my ebook-reader (Sony PRS-T1) somehow doesn't like to download .epub files.

Normally it opens .epub files as if they were text-files.

With this php-download-script I managed to force the browser to download files I store on my server:

<?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();
?>

Now, the PRS-T1 would download the file but for some reason I don't understand it will change the file extension from .epub to .htm - this is weird.

But it seems like there is a way to do it right: when I download a .epub file from readbeam.com it works just like expected (I found this hint at http://www.mobileread.com/forums/showthread.php?t=163466).

What is it, that makes the difference betweeen their configuration and mine?

Here's what I found out using firebug:

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

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

speendo
  • 13,045
  • 22
  • 71
  • 107

1 Answers1

2

Your Content-Type header doesn't match the one from readbeam.

application/epub zip != application/epub+zip

The + is probably being seen by PHP as a space since it seems you are passing it via $_GET.

cOle2
  • 4,725
  • 1
  • 24
  • 26