我如何创建一个下载页面与后php方法

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

本文关键字:方法 php 下载 何创建 创建 一个      更新时间:2023-09-26

我想知道如何在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个文件,您可以创建一个非常简单的帮助器来完成这项工作。

一个简单的帮助器的简短示例:

download.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;
        }
    }
?>

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

这只是一个简单的例子,如果你需要提供少量的文件,并希望做一个简单,快速的实现。

如果你要为无限或未知数量的文件提供服务,你将需要实现一个高级的文件服务系统(或使用一个现有的开源文件服务系统)。

希望对大家有所帮助