2009-08-01 9 views
3

Ich habe ein PHP-Skript, das eine Verknüpfung zu einer temporären Datei, die mit dem Skript erstellt wird, bietet. Ich möchte, dass die Person die Datei herunterladen kann, aber ich möchte nicht, dass die Datei lange auf dem Server verbleibt. Ich möchte die Datei vielleicht nach 2 Minuten entfernen. Wie kann das gemacht werden?Datei nach der Zeit in PHP entfernen

Antwort

8

Sie können es direkt nach dem Download entfernen. gib den Inhalt der Datei aus, dann schließe ihn und unlink es.

bearbeiten: Beispiel

$fo = fopen($f, 'rb') ; 
    $content = fread($fo, filesize($f)) ; 
    fclose($fo) ; 
} 
// Stream the file to the client 
header("Content-Type: application/octet-stream"); 
header("Content-Length: " . strlen($archive)); 
header("Content-Disposition: attachment; filename=\"myfile.exe\""); 
echo $archive; 
unlink($f); 
+0

Das klingt gut, aber wie kann ich den Inhalt der Datei ausgeben? Ich wollte sagen, dass die Datei, die heruntergeladen werden soll, tatsächlich eine ausführbare Datei (.exe) ist, die das Ergebnis einer C++ - Kompilierung war. Wie kann ich dem Benutzer einen exe-Datei-Download geben? – QAH

+0

Senden Sie die entsprechende Header 'header ('Content-Type: application/octet-stream');' vor dem Schreiben in den Puffer. –

+0

QAH, was StreetPPC sagt, ist kein Link zu der Datei. Stattdessen sollte das ursprüngliche Skript die Datei erstellen und sie mit dem obigen Code an den Benutzer ausgeben. Oder Sie können eine Verknüpfung zu einem Skript wie dem obigen erstellen, das die Datei ausgibt und entfernt. – bmb

2

einen Cron-Job einrichten, um Ihre Reinigungs Skript alle paar Minuten laufen. Sie können die Funktion filemtime() verwenden, um zu sehen, wann eine Datei erstellt wurde, und sie löschen, wenn die Datei als "alt genug" angesehen wird.