我写了一个PHP脚本,创建一个zipfile并提示浏览器下载。它不仅下载到客户端,出于某种原因,它还在我的服务器中创建了与此脚本相同目录中的重复zipfile。PHP下载提示脚本下载到服务器以及
我只希望这个脚本下载到客户端,而不是我的服务器上的重复。
$layoutName = $_POST['layoutName'];
$htmlContent = $_POST['htmlContent'];
$layoutDir = 'http://myapp.com/public/views/layouts/' . $layoutName;
$zipFileName = 'Myapp-' . $layoutName . '.zip';
$decompressedFolderName = 'Myapp-' . $layoutName;
$zip = new ZipArchive();
$zip->open($zipFileName, ZipArchive::CREATE);
if($zip)
{
// Add index.html
$zip->addFromString('index.html', $htmlContent);
// Add CSS Folder
$cssContent = file_get_contents($layoutDir . '/css/default.css', false);
$zip->addFromString('css/default.css', $cssContent);
} else {
echo 'Could not create zip';
}
$zip->close();
header('Content-Type: application/octet-type');
header('Content-Disposition: attachment; filename=Myapp-' . $layoutName . '.zip');
header('Content-Length: ' . filesize($zipFileName));
ob_clean();
flush();
echo file_get_contents($zipFileName);
exit;
UPDATE 问题就迎刃而解了。此代码现在可用!
你专门的服务器上下载到客户端之前创建$ zipFileName,所以从服务器中删除它一旦ReadFile的()已完成 –
谢谢。这是我确切的问题。我将readfile()更改为file_get_contents(),并且它不会在我的服务器上创建文件。我找到的每个例子都使用了readfile()。再次感谢你。 – Rashad
@Rashad请马克问题是通过回答自己或改变问题状态来解决的。 –