私の電子ブック リーダー (Sony PRS-T1) の組み込みブラウザーは非常に愚かで、.epub ファイルをダウンロードする代わりにテキスト ファイルとして開きたいので、この .htaccess を使用してブラウザーに強制的に .epub ファイルをダウンロードさせようとしました。ファイル:
<FilesMatch "\.(?i:epub)$">
ForceType application/octet-stream
Header add Content-Disposition "attachment"
</FilesMatch>
ただし、これにより内部サーバー エラーが発生します。
内部サーバーエラー
サーバーで内部エラーまたは構成ミスが発生したため、リクエストを完了できませんでした。
サーバー管理者の webmaster@localhost に連絡して、エラーが発生した時刻と、エラーの原因となった可能性のある操作を知らせてください。
このエラーの詳細については、サーバー エラー ログを参照してください。
省略してHeader add Content-Disposition "attachment"
もエラーは発生しませんが、ブラウザはファイルをダウンロードしません:(
私は何か間違ったことをしていますか?内部サーバー エラーはどこから発生しますか?
[2013 年 4 月 11 日編集]
このスレッドの「人気の質問バッジ」を獲得したばかりで、情報を追加することを思い出しました。
私は最終的に、次のphp関数を使用してSonyのPRS-T1ブラウザーでダウンロードを強制することができました
function startDownload($path, $mimeType) {
if(!file_exists($path)) {
// File doesn't exist, output error
exit('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();
}
いつか誰かを助けることを願っています。