允许用户在提交表单数据后下载

时间:2011-05-06 10:31:20

标签: php download

我必须允许用户在提交他的用户数据后下载。

我创建了三个页面,

  1. 将显示可供下载的文件(catalogue_downloads.html)

  2. 将接收USER数据(form_collecting.php)

  3. 将获取用户数据验证,将其发送到电子邮件地址并重定向到下载页面(mail.php)

  4. 架构是如此catalogue_downloads.html-> form_collecting.php-> mail.php-> catalogue_downloads.html

    我可以重定向到catalogue_downloads,但是如何让用户通过PHP下载他请求的文件

    谢谢

    此致

    Vinoth

4 个答案:

答案 0 :(得分:0)

http://php.net/manual/en/function.readfile.php阅读第一部分(强制下载),您可以读取文件,然后通过标题将其发送给用户。因此,您不必放弃您的文件结构(甚至可能将文件放在您网站的root / public_html之外)。

答案 1 :(得分:0)

您无法为用户提供多个文件,因此除非您在单个存档中压缩服务器端,否则必须向他显示文件的链接。

但是,您不限于指向实际文件的链接,您可以链接到“下载页面”,该页面在调用时向用户提供单个文件,以便未经授权的用户无法访问这些文件(请参阅PENDO的答案)该怎么做)。

答案 2 :(得分:0)

如果需要,您可以在代码下方使用..

    $root = $_SERVER['DOCUMENT_ROOT']; $site = ''; 
    $folder = "path where you want to store downloaded files";

    $fullPath = $root.$folder.'/'.$_REQUEST['filenm'];
//$_REQUEST['filenm'] = file name which you want to download.

    if ($fd = fopen ($fullPath, "r")) {
        $fsize = filesize($fullPath);


        $path_parts = pathinfo($fullPath);
        $ext = strtolower(html);    
        header("Content-type: application/".$ext);   
        header("Content-Transfer-Encoding: Binary");    
 header("Content-Disposition: attachment;filename=\"".$path_parts["basename"]."\"");
        header("Content-length: $fsize");
        header("Cache-control: private"); //use this to open files directly
        while(!feof($fd)) {
            $buffer = fread($fd, 2048);
            echo $buffer;
        } } fclose ($fd); exit;

感谢。

答案 3 :(得分:0)

这是交易:

从catalogue_downloads.html重定向到form_collecting.php时,请为您的目录指定一个唯一ID并将其发布到form_collecting.php。在表单中保留一个隐藏的输入字段,该字段将保留以前发布的目录ID。当表单发布并验证时,启动mail.php的过程。邮件成功后,请阅读目录ID并将用户重定向到catalogue_downloads.html。

希望这会帮助你。 此致