我有一個簡單的腳本,允許有人下載電影文件到他們的設備。該代碼適用於我測試過的所有內容,除了Andriod。 Android設備會破壞名稱和文件擴展名。它可能會調用文件2.qt或.bin。爲什麼這是失敗的?爲什麼這個PHP下載腳本只能在Android上失敗
<?php
if(isset($_GET['filename'])) {
header('Content-Description: File Transfer');
header('Content-Type: movie/quicktime');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize("$file"));
ob_clean();
flush();
readfile("$file");
} else {
echo "Link: <a href='test.php?filename=test.mov'>Download Video</a>";
}
?>
我知道Android本身不支持Quicktime,但這不是我關心的地方。我只是想能夠下載文件,我不關心它的播放。你說沒有什麼東西強制客戶端將文件名命名爲http信封中提供的名稱。有沒有辦法強制它? – Adam
我閱讀了您提供的鏈接,我認爲這對我沒有幫助。它正在談論用Java編寫Android應用程序,這不是我想要做的。我正在嘗試編寫一個允許設備下載文件的php web應用程序。也許你說我不能強制瀏覽器使用我提供的文件名,除非我編寫一個android應用程序? – Adam
是的,這就是片段的意思。很難說出問題的瀏覽器(可能是原生的還是Doplhin)是如何實現文件下載操作的,但它很可能不會使用您提供或重寫的文件名屬性。 –