首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 實作檔案安全下載:本地與遠端 URL 兩種模式完整代碼

     編輯:PHP 相關知識

本地檔案下載

$file_name = "info_check.exe";
$file_dir  = "/public/www/download/";

if (!file_exists($file_dir . $file_name)) {
    echo "檔案不存在";
    exit;
}

$file = fopen($file_dir . $file_name, "r");

// 輸出 HTTP Header
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;

遠端 URL(HTTP/FTP)下載

$file_name = "info_check.exe";
$file_dir  = "https://www.easycn.net/";

$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);
}

關鍵差異

  • 本地檔案可用 filesize() 取得大小,設定 Accept-Length 支援斷點續傳
  • 遠端串流無法預知大小,採用分塊讀取輸出
  • 皆以 Content-Disposition: attachment 強制瀏覽器下載而非開啟
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved