هل تريد حذف الملف غير المُدار بعد التنزيل؟

drupal.stackexchange https://drupal.stackexchange.com/questions/179061

  •  29-09-2020
  •  | 
  •  

سؤال

في وحدة مخصصة أقوم بإنشاء ملف ثم استخدامه drupal_goto لتنزيله.كيف يمكنني حذف الملف بعد تنزيله؟وضع أ file_unmanaged_delete بعد drupal_goto لا يتم إعدامه، و hook_file_download يحدث قبل التنزيل للتحقق من الأذونات وما إلى ذلك.لذلك لست متأكدًا من كيفية القيام بذلك.هل يجب علي اللجوء إلى تنظيف الملفات الموجودة في مجلد باستخدام cron بطريقة أو بأخرى؟

لا يوجد حل صحيح

نصائح أخرى

// 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;

سيقوم الكود التالي بإزالة الملف بعد التنزيل مع الأخذ في الاعتبار أن ملفك موجود في دليل tmp.

$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();
}

يمكنك زيارة الرابط التالي للحصول على التفاصيلhttp://kahthong.com/2012/08/simple-example-how-use-drupal-serve-file-downloads

شكرًا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى drupal.stackexchange
scroll top