基本上,我希望有一个链接来下载每页底部的.zip文件。在.zip文件里面我将有一个PDF文件。
任何时候下载.zip文件,我希望它的标题与页面标题相同 - 而且,我希望PDF是相同的。
例如,如果他们从标题为“This Is My Page”的页面下载,则.zip文件应为“This Is My Page.zip”,内部的PDF应为“This Is My Page.pdf” 。无论从哪个页面下载,PDF都将具有完全相同的内容。
我对任何解决方案都持开放态度,无论是PHP,Javascript,HTML等等。
答案 0 :(得分:3)
当您force a download with PHP时,您可以使用filename=
标头中的Content-Disposition
动态设置下载文件名。
<强> download_zip.php 强>
$actual_file_name = '/var/yourserver/file.zip';
$download_file_name = substr(str_replace(array('\\/|>< ?%\"*'), '_', $_GET['title'] . '.zip'), 0, 255);
$mime = 'application/zip';
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);
header('Content-Type: ' . $mime);
header('Content-Disposition: attachment; filename="'. $download_file_name .'"'); // Set it here!
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($actual_file_name));
header('Connection: close');
readfile($actual_file_name);
exit();
要获取最后一页的页面标题,最简单的方法可能是将标题作为$_GET
变量传递到下载链接中。从包含下载链接的页面:
<a href="http://yoursite.com/download_zip.php?title=The+Page+You+Were+Just+On">Download Zip File With This Page's Title</a>
这将要求您在链接中包含页面标题,因此要避免在两个位置更新页面标题,请尝试使用$page_title
变量。在包含下载链接的页面中:
<?php
$page_title = 'Page Title';
?>
<html>
<head>
<title><?= $page_title ?></title>
</head>
<body>
<a href="http://yoursite.com/download_zip.php?title=<?= urlencode($page_title) ?>">Download Zip File With This Page's Title</a>
</body>
</html>
答案 1 :(得分:1)
我认为这是新属性的一个案例 HTML5中引入的下载
<a id="link" href="path/to/file.zip" >Download</a>
<script>
$(document).ready( function(){
var sPath=window.location.pathname;
var sPage = sPath.substring(sPath.lastIndexOf('/') +1, sPath.lastIndexOf('.'));
$('#link').attr("download",sPage +".zip");
});
</script>