Nicht verwaltete Datei nach dem Download löschen?
-
29-09-2020 - |
Frage
In einem benutzerdefinierten Modul erstelle ich eine Datei und verwende sie dann drupal_goto
um es herunterzuladen.Wie kann ich die Datei nach dem Herunterladen löschen?Platzieren eines file_unmanaged_delete
nach dem drupal_goto
wird nicht ausgeführt, und hook_file_download
geschieht vor dem Download für Berechtigungsprüfungen und dergleichen.Ich bin mir also nicht sicher, wie ich das machen soll.Muss ich irgendwie darauf zurückgreifen, Dateien in einem Ordner mit cron zu bereinigen?
Keine korrekte Lösung
Andere Tipps
// Generate pdf card.
$file_path = $crm_card->generatePdfCard();
$filename = basename($file_path);
$headers = [
'Content-Type' => 'application/octet-stream',
'Content-Disposition' => 'attachment; filename="' . $filename . '"',
'Content-Length' => filesize($file_path),
];
$binary_file_response = new BinaryFileResponse($file_path, 200, $headers);
$binary_file_response->deleteFileAfterSend(TRUE);
return $binary_file_response;
Der folgende Code entfernt die Datei nach dem Download, da sich Ihre Datei im tmp-Verzeichnis befindet.
$filename = 'foobar.xls';
$temp_path = realpath(file_directory_temp()) . '/';
if (file_exists($temp_path . $filename)) {
// Serve file download.
drupal_add_http_header('Pragma', 'public');
drupal_add_http_header('Expires', '0');
drupal_add_http_header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0');
drupal_add_http_header('Content-Type', 'application/vnd.ms-excel');
drupal_add_http_header('Content-Disposition', 'attachment; filename=' . basename($temp_path . $filename) . ';');
drupal_add_http_header('Content-Transfer-Encoding', 'binary');
drupal_add_http_header('Content-Length', filesize($temp_path . $filename));
readfile($temp_path . $filename);
unlink($temp_path . $filename);
drupal_exit();
}
Sie können den folgenden Link für Details besuchen http://kahthong.com/2012/08/simple-example-how-use-drupal-serve-file-downloads
Danke!