需要填写表格才能下载.pdf?

时间:2017-11-15 00:13:46

标签: php html

我是否可以动态制作包含PDF文件下载链接的页面,并要求用户在下载.PDF文件之前填写HTML表单?

2 个答案:

答案 0 :(得分:1)

这可以通过html或PHP和HTML完成。但是,我更喜欢PHP实现,因为它允许更安全的输入验证,并允许更多的向后和浏览器兼容性。 JavaScript方法需要数据网址,某些网络浏览器不支持这些网址。

<?php

  function startDownload($filePath) {
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=" . basename(urlencode($filePath)));   
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
    header("Content-Description: File Transfer");  
    $fp = fopen($filePath, "r");
    while (!feof($fp)) {
      echo fread($fp, 65536);
      flush();
    } 
    fclose($fp);
    die();      
  }

  //Note that I decided to check specifically for the strings and didn't just take the hidden field here
  //  If we just assume the user isn't a liar, 

  if (isset($_POST['name']) && isset($_POST['file'])) {
    if ($_POST['file'] == "pdfurl-guide.pdf") {
      startDownload("pdfurl-guide.pdf");
    } else if ($_POST['file'] == "someOther.pdf") {
      startDownload("someOther.pdf");
    } else {
      echo "error";
    }
  }

?>

Please fill out the following form to download:
<form method="post" action="">
  <input type="hidden" name="file" value="pdfurl-guide.pdf" /> 
  Name: <input type="text" name="name" /><br />
  <input type="submit" />
</form>
<br />
What if you want this file?    
<form method="post" action="">
  <input type="hidden" name="file" value="someOther.pdf" /> 
  Name: <input type="text" name="name" /><br />
  <input type="submit" />
</form>

答案 1 :(得分:1)

是的,有可能。有很多方法。你可以简单地使用jQuery隐藏下载按钮,直到表单被提交并在之后显示。

如果此人输入他们的电子邮件,则向他们发送一封电子邮件,其中包含您生成的唯一字符串的URL(例如www.yourwebsite.com/pdf.php?s=h4jbsj5623v6),并将此字符串保存到您的数据库中。< / p>

创建一个PHP文件,使用TCPDF library或任何其他能够生成.pdf文件的类似PHP库生成pdf文档。

当访问下载URL时,如果存在作为GET参数传递的唯一字符串,则检查数据库。如果它确实使用前面提到的库显示了pdf文档。

希望这会有所帮助......