如何使用post php方法创建下载页面?

时间:2016-09-14 09:42:41

标签: javascript php jquery html css

我想知道如何在PHP中创建一个下载文件的下载页面,而不会将文件的下载链接放在一起,并将文件和下载页面的源文件放在

的网页中。
  

$(document).on("click",".imgblok", function(){ p = $(this).attr("src") if(p.substr(p.length-5,1) != "W"){ $(this).attr("src",p.replace(".jpg","W.jpg")) }else{ console.log("Always W") } })

标记..

像:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img class="imgblok" src="http://phaser.io/images/examples/2/thumb/bitmapdata/replace-color.jpg" />

最后一个输入是下载按钮图像的src ...

任何正文都可以帮助我了解整个过程的工作原理,以及在/download.php页面的源代码中放置什么......以及如何为我的网页制作表单......

实际上我在网站上看到了这一切,他们正在做同样的事情。

请帮忙。提前谢谢......

1 个答案:

答案 0 :(得分:0)

您想要创建一个通用的下载帮助程序,您可以在其中提供某种唯一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;
        }
    }
?>

<强> HTML

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

如果您需要提供少量文件并希望进行简单,快速的实施,这只是一个简单的示例。

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

希望它有所帮助