【发布时间】:2020-06-11 09:28:38
【问题描述】:
如何将生成的 excel 文件添加到受密码保护的 zip 并下载? 我正在使用 ZipArchive 库。我正在尝试将 excel 文件添加到 zip,但不幸的是 zip 没有生成。
if(isset($_POST["export_excel"]))
{
$sql = "SELECT * FROM Datas ORDER BY ID DESC";
$result = mysqli_query($connect, $sql);
....
....
....
$output .= '</table>';
$fileName = "DB".date('Y_m_d').".xls";
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$fileName");
echo $output;
$zip = new ZipArchive;
$tmp_file = 'myzip.zip';
if ($zip->open($tmp_file, ZipArchive::CREATE)) {
$zip->setPassword>addFile('PASSWORD', $fileName);
$zip->setEncryptionName($fileName, ZipArchive: header('Content-disposition:EM_AES_256 attachment; filename=files.zip');
header('Content-type: application/zip');
$zip->close();
readfile($tmp_file);
}
}
【问题讨论】:
-
标头类型可能不正确,您实际上并没有输出 zip 文件,stackoverflow.com/a/12226067/1213708。
-
@NigelRen 我已经按照链接更新了代码。生成了 zip,但不幸的是 zip 无效。我假设该文件永远不会被添加。我在这里做错了什么?
-
而不是
echo电子表格的内容,这可能需要写入文件 (file_put_contents($fileName, $output);),然后将此文件添加到 zip 文件中。 -
@NigelRen 知道了!谢谢你:)
标签: php ziparchive