php開(kāi)發(fā)如何實(shí)現(xiàn)文件下載

PHP
小樊
81
2024-10-22 09:40:06

在PHP開(kāi)發(fā)中,實(shí)現(xiàn)文件下載可以通過(guò)以下幾種方法:

  1. 使用HTTP頭實(shí)現(xiàn)文件下載

在PHP腳本中,你可以通過(guò)設(shè)置HTTP頭信息來(lái)實(shí)現(xiàn)文件下載功能。以下是一個(gè)簡(jiǎn)單的示例:

<?php
$file_path = 'path/to/your/file.ext';

if (file_exists($file_path)) {
    // 設(shè)置文件名和文件類型
    $file_name = basename($file_path);
    $file_type = mime_content_type($file_path);

    // 設(shè)置HTTP頭信息
    header('Content-Description: File Transfer');
    header('Content-Type: ' . $file_type);
    header('Content-Disposition: attachment; filename="' . $file_name . '"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file_path));

    // 清空緩沖區(qū)并輸出文件內(nèi)容
    ob_clean();
    flush();

    // 讀取文件并發(fā)送給瀏覽器
    readfile($file_path);
    exit;
} else {
    echo 'File not found.';
}
?>
  1. 使用HTML表單實(shí)現(xiàn)文件下載

你還可以使用HTML表單來(lái)觸發(fā)文件下載。以下是一個(gè)簡(jiǎn)單的示例:

<!DOCTYPE html>
<html>
<head>
    <title>File Download</title>
</head>
<body>
    <form action="download.php" method="post" enctype="multipart/form-data">
        <input type="file" name="fileToDownload" />
        <input type="submit" value="Download File" />
    </form>
</body>
</html>

在這個(gè)示例中,當(dāng)用戶選擇一個(gè)文件并點(diǎn)擊下載按鈕時(shí),download.php腳本將被調(diào)用。你需要在download.php腳本中設(shè)置HTTP頭信息來(lái)實(shí)現(xiàn)文件下載功能,如下所示:

<?php
$file_path = 'path/to/your/file.ext';

if (file_exists($file_path)) {
    // 設(shè)置文件名和文件類型
    $file_name = basename($file_path);
    $file_type = mime_content_type($file_path);

    // 設(shè)置HTTP頭信息
    header('Content-Description: File Transfer');
    header('Content-Type: ' . $file_type);
    header('Content-Disposition: attachment; filename="' . $file_name . '"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file_path));

    // 清空緩沖區(qū)并輸出文件內(nèi)容
    ob_clean();
    flush();

    // 讀取文件并發(fā)送給瀏覽器
    readfile($file_path);
    exit;
} else {
    echo 'File not found.';
}
?>

以上兩種方法都可以實(shí)現(xiàn)文件下載功能。你可以根據(jù)自己的需求選擇合適的方法。

0