我有用于创建某些文本文件的zip文件夹的php脚本
<?php
$path = "path\to\files";
$files = array($path.'\ionic interaction.txt',$path.'\file1.txt',$path.'\file2.txt',$path.'\file3.txt',$path.'\file3.txt');
$folder = $_POST['filename'];
$zipname = $folder.'.zip';
echo '<form action="download.php" method="post" name="zippass2download"><input type="hidden" name="zipname" value="'.$zipname.'"></form>';
$zip = new ZipArchive;
$zip -> open($zipname, ZipArchive::CREATE);
foreach($files as $file)
{
$zip -> addFile($file);
}
$zip -> close();
?>
在该脚本旁边,我创建了一个超链接来下载在第一个脚本中创建的zip文件夹。
<a href="download.php">Download</a>
在download.php中我有以下代码
<?php
$path2zip = 'C:/wamp/www/PPInt';
$tobezipped = $_POST['zipname'];
header('Content-disposition: attachment; filename=$tobezipped');
header('Content-type: application/zip');
readfile('$path2zip/$tobezipped');
?>
没问题到底是哪里。任何人都可以为我解决这个问题吗?
答案 0 :(得分:1)
$ tobezipped = $ _POST ['zipname'];
未在调用download.php时生成的get请求中设置。在生成文件后,Rember HTTP是无状态的。单击链接时,POST参数不会出现在下一个GET请求中。
您可能需要将zipname / path附加到download.php链接,如“download.php?tobezipped = zipname.zip”
答案 1 :(得分:1)
“download.php”没有获得“$ _POST ['zipname']”,因为你没有将表单发布到它而不是你提供链接,尝试给出发布表单的按钮,你有隐藏的输入文件名。 下面“Dasun”给出的代码另一件事就是检查文件和zip文件的相对URL。
答案 2 :(得分:0)
尝试以下代码
<?php
$file_name = $_POST['zipname'];
$file_url = 'C:/wamp/www/PPInt'. $file_name;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".$file_name."\"");
readfile($file_url);
?>