Score:1

ฉันจะลบไฟล์ที่ให้บริการโดยตัวควบคุมแบบกำหนดเองหลังจากที่ดาวน์โหลดมาแล้วได้อย่างไร

ธง br

เริ่มจาก ฉันจะสร้าง URL ดาวน์โหลดไฟล์ได้อย่างไร ฉันได้สร้างตัวควบคุมแบบกำหนดเองที่อนุญาตให้ผู้ใช้ดาวน์โหลดไฟล์ PDF

my_module.routing.yml

my_module.pdf_link:
  เส้นทาง: '/my-module/pdf/download'
  ค่าเริ่มต้น:
    _title: 'ดาวน์โหลดไฟล์ PDF'
    _controller: '\Drupal\my_module\Controller\MyModuleController::downloadPDF'
  ความต้องการ:
    _role: 'รับรองความถูกต้อง'

ตัวควบคุมโมดูลของฉัน

ฟังก์ชันสาธารณะ downloadPDF() {
  $pdf_stream = $this->restCallThatReturnAPdfStream();

  $ส่วนหัว = [
    'ประเภทเนื้อหา' => 'ใบสมัคร/pdf',
    'การจัดการเนื้อหา' => 'ไฟล์แนบ;ชื่อไฟล์ = "ดาวน์โหลด.pdf"'
  ];

  $temporary_pdf_file = $this->fileSystem->saveData($pdf_stream, 'temporary://mytempfile.pdf', FileSystemInterface::EXISTS_REPLACE); 

  ส่งคืน BinaryFileResponse($temporary_pdf_file, 200, $headers, TRUE);
}

ไฟล์นี้ต้องเป็นไฟล์ส่วนตัวสำหรับผู้ใช้แต่ละราย ดังนั้นผู้ใช้รายอื่นจึงไม่ควรดาวน์โหลดไฟล์ดังกล่าว

ฉันคิดว่าฉันสามารถลบไฟล์ได้หลังจากที่คอนโทรลเลอร์ส่งคืนการตอบสนอง แทนที่จะใช้การตรวจสอบการควบคุมการเข้าถึงที่ซับซ้อนสำหรับไฟล์ แต่ฉันไม่รู้ว่าฉันสามารถทำได้ง่าย ๆ ได้อย่างไร

ตัวอย่างเช่น ฉันสามารถตั้งค่าคิว Cron ให้ลบไฟล์เหล่านั้นทุกๆ N นาที แต่ดูเหมือนว่าจะเกินความจำเป็น

ฉันไม่สามารถเปลี่ยนแปลงเวลาลบไฟล์ชั่วคราวได้ เนื่องจากไฟล์เหล่านั้นถูกใช้ที่อื่นในไซต์ และฉันจะไม่เสี่ยงที่จะทำลายตรรกะอื่นๆ ที่มีอยู่

Score:1
ธง cn

คุณกำลังมองหา BinaryFileResponse::deleteFileAfterSend:

$response = ใหม่ BinaryFileResponse($temporary_pdf_file, 200, $headers, TRUE);
ส่งคืน $response->deleteFileAfterSend(จริง);
Giuseppe avatar
br flag
ขอบคุณ มันอยู่ใต้จมูกของฉัน แต่ฉันหาเจอ xD

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา