用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4067|回复: 4
收起左侧

[已解决] 如何删除临时文件?

[复制链接]
发表于 2011-3-14 11:24:19 | 显示全部楼层 |阅读模式
我的网站提供导出报告信息成excel,然后可以供用户下载到自己电脑上的功能。

具体流程是这样:
从数据库取出相应数据->在服务器的cache文件夹里生成相应excel文件->提供下载->下载完成后删除cache文件夹里生成的临时文件
代码如下:
PHP复制代码
 
  $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  $objWriter->save($excel_file);
 
  //make a .zip package.
  $this->load->library('zip');
  $this->zip->read_file($excel_file);
  $this->zip->archive($excel_file_zip);
   
   //Download the file.
  $file_name = basename($excel_file_zip);
  $this->zip->download($file_name);  
 
  unlink($excel_file_zip);
  unlink($excel_file);
 
复制代码

现在情况是下载功能没问题,可是下载完成后cache文件夹里的临时文件并没有被删除掉,
unlink没有起作用,是unlink的时候文件正在被下载所以不能操作的原因吗?应该怎么修改才能在用户下载完成后,把临时文件删除掉?
谢谢!
发表于 2011-3-14 11:32:17 | 显示全部楼层
本帖最后由 jeongee 于 2011-3-14 11:35 编辑

貌似不用先生成,再下载吧,再删除这个流程吧
就直接将内容发送到浏览器就可以了
  • ////header("Content-Type: application/force-download");
  • ////header("Content-Type: application/octet-stream");
  • ////header("Content-Type: application/download");
  • ////header('Content-Disposition:inline;filename="'.$outputFileName.'"');
  • ////header("Content-Transfer-Encoding: binary");
  • ////header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  • ////header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  • ////header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  • ////header("Pragma: no-cache");
  • ////$objWriter->save('php://output');



想方便的话
你可以使用下载辅助函数里的force_download函数
发表于 2011-3-14 11:56:35 | 显示全部楼层
楼上说的对,正在下载的时候你怎么删除文件啊?
所以,直接发给浏览器就完了,不用保存文件。
 楼主| 发表于 2011-3-14 11:58:49 | 显示全部楼层
我看了下Zip 编码类中已经集成了你上面说的东西,现在是我要文件在服务端先压缩好在提供给用户下载,
这样就有临时文件就要产生,现在问题怎么删除掉?
我刚才把$this->zip->download($file_name);  注释掉了,发现服务器上的临时文件可以删除了。
是这个函数里有文件流没有关闭?
 楼主| 发表于 2011-3-14 12:45:34 | 显示全部楼层
谢谢,已经解决~直接发到浏览器就行了

本版积分规则