簡體   English   中英

如何使用 post php 方法創建下載頁面?

[英]How can I create a Download Page with post php method?

我想知道如何在 PHP 中創建一個下載頁面來下載文件而不顯示文件的下載鏈接,並將源文件和下載頁面放在網頁中

<form>...</form>

標簽..

喜歡:

<form action="example.com/download.php" method="post" target="_blank">
<input name="id" type="hidden" value="#">
<input name="filename" type="hidden" value="#">
<input name="filesize" type="hidden" value="#"><p></p><div
align="center"> > > <input  type="image"> </div> </form>

最后一個輸入是下載按鈕圖像的 src...

任何機構都可以幫助我了解整個過程是如何工作的,以及在 /download.php 頁面的源代碼中放入什么......以及如何為我的網頁制作表單......

其實我在一個網站上看到了這一切,誰在做同樣的事情..

請幫忙。 提前致謝...

您想創建一個通用的下載助手,您可以在其中提供某種唯一的 id,並讓此助手將正確的文件返回給最終用戶,而無需透露文件的真實路徑。

有很多方法可以解決這個問題,這也取決於您要實現的目標,以及可供下載的文件數量(這會影響實現的簡單性或復雜性)

例如:

如果您有一個可以提供數千個文件的下載站點 - 您將希望實現一種適用於 N 個文件的方法,這可能會變得復雜(當然取決於您的要求)。

另一方面 - 如果您只想處理 5-10 個文件,您可能會創建一個非常簡單的幫助程序來完成工作。

一個簡單助手的簡短示例:

下載.php

<?php 
    $fileId = $_GET['fileId'];
    switch($fileId){
        case 1:
            $fileName = 'myFile.pdf';
            break;
        case 2:
            $fileName = 'myOtherFile.doc';
            break;
        default:
        $fileName = null;
    }
    if($fileName){
        // $fileName is your file identifier
        $fileFullPath = $_SERVER['DOCUMENT_ROOT'].'mySecretFolder/files/'.$fileName;

        if (file_exists($fileFullPath)) {
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename='.basename($fileFullPath));
            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($fileFullPath));
            ob_clean();
            flush();
            readfile($fileFullPath);
            exit;
        }
    }
?>

HTML

<a href="https://www.my-domain.com/download.php?fileId=1"> Download PDF </a>

如果您需要提供少量文件並希望進行簡單、快速的實現,這只是一個簡單的示例。

如果您要為無限量或未知數量的文件提供服務器,您將需要實施一個高級文件服務系統(或使用現有的開源系統)。

希望它有點幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM