如何在使用stream_get_contents()后自动删除zip文件;在php中查看文件?

时间:2012-02-20 20:43:55

标签: php

我有这个代码来读取文件进行预览,但缺点是我必须首先从云下载文件并从中读取,但这是浪费空间所以我想在查看某个文件后将其删除。这样做有自动方式吗?或者我是否必须将其集成到关闭按钮?

// Get the container we want to use
$container = $conn->get_container('mailtemplate');
//$filename = 'template1.zip';
// upload file to Rackspace
$object = $container->get_object($filename);
//var_dump($object);
//echo '<pre>' . print_r($object,true) . '</pre>';
$localfile = $dir.$filename;
//echo $localfile;
$object->save_to_filename($localfile);
    if($_GET['preview'] == "true")
    {
        $dir = "../mailtemplates/";
        $file1 = $_GET['tfilename'];
        $file = $dir.$file1;
        $file2 = "index.html";
        $info = pathinfo($file);
        $file_name =  basename($file,'.'.$info['extension']);
        $path = $file_name.'/'.$file2;
        $zip = new ZipArchive();
        $zip->open($file);
        $fp = $zip->getStream($path);
        if(!$fp)
        {
            exit("faileds\n");
            $zip->close();
            unlink($dir.$filename);                 
        }
        else
        {                           
            $stuff = stream_get_contents($fp);
            echo $stuff;
            $zip->close();                      
            if($stuff != null)
            {
                unlink($dir.$filename);
            }                       
        }
    }
    else
    {
        unlink($dir.$filename);
    }

1 个答案:

答案 0 :(得分:1)

你没有谷歌这样做了吗?

尝试Unlink

编辑:

看一下这段代码,$zip->open($file);&lt; - 就是打开文件的地方。文件变量由:

设置

"../mailtemplates/" . basename($_GET['tfilename'], '.' . $info['extension']) . '/' . "index.html"

因此,您正在抓取相对目录并将文件名作为文件夹抓取,然后转到该文件夹​​ /index.html 。这是一个例子:

如果您正在进行 c:\ 测试,那么您将转到.. / mailtemplates / ,您将进入 c:\ mailtemplates 然后你看文件测试 .php但你删除文件扩展名,所以你将打开 c:\ mailtemplates \ test \ index.html 所以你打开那个html文件并阅读它。然后,您正在尝试删除 c:\ mailtemplates \ test.php

你能解释一下这对你有什么意义吗?因为这对我来说似乎很奇怪。