下载后删除文件 - PHP

ivn*_*ivn 1 php fopen moodle file

我正在研究Moodle 2.2.1,并使用某些查询创建了dynamic.csv文件.我在我的主目录中创建了一个具有写权限的/ tmp /目录,并使用我通过代码创建.csv文件的文件函数.

一切正常,fopen(),fwrite()函数和csv文件每次动态创建.我已经为这段代码的用户保存了这些文件供下载.

<a href='/moodle/tmp/'".$filename."'> Download </a>
Run Code Online (Sandbox Code Playgroud)

在.htaccess中使用此行的N,文件可以下载到任何人的机器上.

 AddType application/octet-stream .csv
Run Code Online (Sandbox Code Playgroud)

但问题是,每次加载页面时,都会使用不同的时间戳创建相同的.csv文件.基本上我在/ tmp /目录中获得了许多具有不同时间戳的重复文件.

有没有办法在该页面的每次加载时,该文件夹中文件的所有现有实例都被删除,并且可以下载新批文件.这样我就没有重复文件,只有每个文件的一个实例.

如果有人可以帮助我,我真的很感激.

谢谢

编辑:如果我创建和编写.csv文件的代码是这样,那么我应该在一小时之前删除带有时间戳的旧文件以及如何保留最新文件.

 foreach($uniquenames as $uniquename)
 {
$data = "Header1,Header2,Header3,Header4,Header5\n";
$filename = $uniquename.'_'.time().'.csv';
$writepath = $filepath.$filename;
$fh       = fopen($writepath, 'w');
$result = $functions->getFiless();
foreach($result as $activity)
{
    if($uniquename == $activity->quiz)
    {
        $data .= .$somedata.",".$foreachheader."\n";        
    }
    else
    {

    }
}
fwrite($fh, $data);
fclose($fh);
echo "<p>".$uniquename . "<div class='assessment-reportlink'><a href='/moodle/tmp/".$filename."'> Download </a></p></div>";
Run Code Online (Sandbox Code Playgroud)

}

小智 5

这对我有用:

$file = $_GET['f'];

if ($file and file_exists($file)) 
{
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename='.basename($file));
  header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  header('Content-Length: ' . filesize($file));
  ob_clean();
  flush();
  if (readfile($file)) 
  {
    unlink($file);
  }
}
Run Code Online (Sandbox Code Playgroud)