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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top