我是否可以动态制作包含PDF文件下载链接的页面,并要求用户在下载.PDF文件之前填写HTML表单?
答案 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文档。
希望这会有所帮助......