zip file nach download löschen

Hi,
ich stehe vor folgendem Problem:

Ein Script packt nach der Auswahl eines Users einen Ordner mit Files in ein ZIP archiv und bietet das ganze dann als download link an. mit der Zeit wäre jedoch das problem das meine platte ziemlich voll würde da ja die ganze zip files rumliegen würden.

wie kann ich am besten mit PHP automatisch nach dem der download abgeschlossen ist das file wieder löschen?

bg

b4ck
 
für doch einfach den download über ein phpscript aus, was dir die datei ausliefert, und versehe das mit einer art session system.
damit kannst du einfach sagen, id so und so gehört zu file a und der benutzer hat 24 stunden zeit das zu löschen.

ein zweites zeitgesteuertes script schaut dann eben immer um mitternacht, ob was gelöscht werden kann.
 
Du kannst die Files ja einfach dynamisch in ein Zip-Archive packen und an den Benutzer schicken.

Ich hab Dir mal schnell ein Beispiel geschrieben.

PHP:
$zip = new ZipArchive();
// Wie das Zip-File heissen soll
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === true) {	
        //Hier packst Du die Dateien in den jeweiligen Ordner im Zip
        // $zip->addFile(Source, Dest);
	$zip->addFile('Font1.ttf', 'TestFolder/Font1.ttf');
	$zip->addFile('Font2.ttf', 'TestFolder/Font2.ttf');
	$zip->addFile('Font3.ttf', 'TestFolder/Font3.ttf');
	$zip->addFile('Font4.ttf', 'TestFolder/Font4.ttf');	
	$zip->close();
	
        //Download Header schicken
	header("Pragma: public");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Content-Description: File Transfer");
	header("Content-Type: application/otrkey");	
	header("Content-Length: " . filesize('test.zip')); 
	header("Content-Disposition: attachment; filename=".basename('test.zip').";");
	header("Content-Transfer-Encoding: binary"); 
	
        // Zip-File einlesen
	readfile('test.zip');
	
        // Zip-File wieder löschen
	unlink('test.zip');	
} else {
	echo $res;
}
 
unlink() wird ja erst nachdem der Download beendet ist aufgerufen. Vorher werden ja die Daten mit readfile() an den Browser geschickt.
 
Zurück
Oben