有時咱們須要隱藏真實的文件下載地址,防止惡意下載,咱們能夠採用下面的方法(參考網絡,侵權請告知)網絡
如下爲引用的內容:app
$file_name = "example.exe";spa
$file_dir = "/public/www/download/";ci
if (!file_exists($file_dir . $file_name)) { //檢查文件是否存在get
echo "文件未找到";it
exit; io
} else {stream
$file = fopen($file_dir . $file_name,"r"); // 打開文件 file
// 輸入文件標籤下載
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 輸出文件內容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;
}
而若是文件爲遠程文件,則原始碼會有少量改動,程式以下:
如下爲引用的內容:
$file_name = "example.exe";
$file_dir = "http://back.zhizhi123.com/";
$file = @ fopen($file_dir . $file_name,"r");
if (!$file) {
echo "文件未找到";
} else {
Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=" . $file_name);
while (!feof ($file)) {
echo fread($file,50000);
}
fclose ($file);
}
這樣就能用PHP直接輸出文件了。