automatisches löschen nach download

quidnovi

Erfahrenes Mitglied
Hallo PHPler,

ist es möglich, ein File, das aus einem Ordner downgeloaded wurde aus diesem Ordner automatisch zu löschen?

Hintergrund:
Der Ordner wird mit Arbeitsberichten gefüllt und von der Sekretärin in ein Warenwirtschaftsprogramm importiert. Danach benötigt sie das File in dem Downloadordner nicht mehr.

Das ausgewählte File wird mit
PHP:
echo "<a href='dl.php?file=" . $ordner . $file . "'>" . $file . "</a>";
$_GET['file'];
an das Script, das den download einleitet, übergeben.

Das Script das den download einleitet:
PHP:
$filename = $_GET['file'];
		
		if(ini_get('zlib.output_compression'))
		  ini_set('zlib.output_compression', 'Off');

		$file_extension = strtolower(substr(strrchr($filename,"."),1));

		if( $filename == "" ){
			echo "<html><title>Imide Download Script</title><body>ERROR: download file NOT SPECIFIED. </body></html>";
			exit;
		} 
		elseif ( ! file_exists( $filename ) ){
			echo "<html><title>Imide Download Script</title><body>ERROR: File not found.</body></html>";
		    exit;
		}
		switch( $file_extension ){
		  case "csv": $ctype="text/comma-separated-values"; break;
		  case "pdf": $ctype="application/pdf"; break;
		  case "exe": $ctype="application/octet-stream"; break;
		  case "zip": $ctype="application/zip"; break;
		  case "doc": $ctype="application/msword"; break;
		  case "xls": $ctype="application/vnd.ms-excel"; break;
		  case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
		  case "gif": $ctype="image/gif"; break;
		  case "png": $ctype="image/png"; break;
		  case "jpeg":
		  case "jpg": $ctype="image/jpg"; break;
		  default: $ctype="text/comma-separated-values";
		}
		header("Pragma: public");
		header("Expires: 0");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		header("Cache-Control: private",false);
		header("Content-Type: $ctype");
		header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
		header("Content-Transfer-Encoding: binary");
		header("Content-Length: ".filesize($filename));
		readfile("$filename");
		exit();

Wie stelle ich es nun an - wenn überhaupt möglich - dieses File nach dem download zu löschen? Wenn der download aber abgebrochen oder aus irgendeinem Grund nicht möglich ist, sollte das File natürlich noch zur Verfügung stehen.


Bitte um Eure Hilfe, danke
 
Hi Ihrs,

habe es nach ein bisschen überlegen anders gelöst.

Das ausgewählte File kann nun nach Aufforderung gelöscht werden.

Für alle die es interessiert, nun der Code

Das Script, das die Auswahl zum download und löschen anzeigt:
PHP:
$ordner = "./files/"; 
            $handle = opendir($ordner);//Öffnen des Quellordners
            while ($file = readdir ($handle))//Solange er lesen kann wiederhohlen
            {
                if($file != "./files/")//Ordner darf nicht "." sein
                {
                    $e = strlen($file);
                    $endung = substr($file,$e-4,4);
                    switch($endung){
						
						case".csv":
							echo "<table width='60%' border='1'><tr><td><a href='dauni.php?file=" . $ordner . $file . "'>" . $file . "</a></td>".
							 "<td><a href='loeschen.php?file=" . $ordner . $file . "'>Eintrag l&ouml;schen</a></td></tr></table>";
							$_GET['file'];							
                        break;

                        default:
							$dot = substr($file,$e-4,1);
                            if($dot == "."){
								}
								else{
									echo "<a href=\"show_one.php?file=" . $file . "\">" . $file . "</a><br>";
									$_POST['file'];
								}
								break;

                    }
                }
            }
            closedir($handle);

jetzt das zum löschen:
PHP:
$filename = $_GET['file'];		
		
		$myfile = $filename;
		if (unlink($myfile))
			echo "geloescht<br /><br /><a href='./a_read.php'>zur&uuml;ck</a>";
		else
			echo "konnte nicht gel&ouml;scht werden<br /><br /><a href='./a_read.php'>zur&uuml;ck</a>";

geht wahrscheinlich auch professioneller, tut aber seinen Zweck.

solong
 
Zurück