2014-01-07 84 views
0

我写了一个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 问题就迎刃而解了。此代码现在可用!

+2

你专门的服务器上下载到客户端之前创建$ zipFileName,所以从服务器中删除它一旦ReadFile的()已完成 –

+0

谢谢。这是我确切的问题。我将readfile()更改为file_get_contents(),并且它不会在我的服务器上创建文件。我找到的每个例子都使用了readfile()。再次感谢你。 – Rashad

+0

@Rashad请马克问题是通过回答自己或改变问题状态来解决的。 –

回答

1

这是我确切的问题。我将readfile()更改为file_get_contents(),现在它不会在我的服务器上创建该文件。

+0

是否有可能自己接受答案? –

+1

我必须等2天才能让我。 – Rashad

+0

好..没问题.. :) –