Tôi có một bản PDF xuất mất một lúc để tạo tệp PDF. Tôi muốn người dùng có thể nhấp vào liên kết xuất và được hiển thị với hộp thoại tải xuống ngay lập tức. Bằng cách này, họ có thể bắt đầu tải xuống và chỉ cần đợi nó hoàn thành. Thay vì nhấp vào liên kết, hãy đợi cho thế hệ và sau đó chờ tải xuống lại.Hộp thoại tải xuống kích hoạt ngay sau khi tiêu đề nhận được
Dưới đây là một ví dụ rất đơn giản trong PHP:
<?php
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename=test.pdf');
flush();
// time consuming PDF creation happens here
sleep(15);
echo 'pdf contents would be here';
Ý tưởng là để gửi các tiêu đề thích hợp, flush() chúng cho trình duyệt, từ từ tạo PDF và cuối cùng là gửi nó vào trình duyệt.
Điều này hoạt động hoàn hảo trong chrome. Hộp thoại tải xuống bật lên một cách bất ngờ và giấc ngủ là một phần của thời gian chờ tải xuống.
Trong Firefox và InternetExplorer, tính năng này không hoạt động. Các trình duyệt đó chờ 15 giây đầy đủ trước khi hiển thị hộp thoại tải xuống.
Bất kỳ ý tưởng nào làm cho hộp thoại tải xuống bật lên vô tình sẽ được đánh giá cao.
Đó là dự đoán của tôi, quá.Tôi đã thử điều này nhưng nó không hoạt động. Để chắc chắn, tôi đã thử lại mã của bạn trong Firefox. Nó vẫn chờ 15 giây trước khi bật hộp thoại tải xuống. –
@AndreasGohr Tôi cho rằng bạn đang sử dụng chỉ 'flush()' bởi vì bạn đã tắt bộ đệm đầu ra của mình. Thực tế là nó không hoạt động có nghĩa là bạn không có. Tôi đã cập nhật mã để làm cho nó hoạt động bất kể cấu hình đệm đầu ra. – Rei
Lạ. Bạn nói đúng, tôi nghĩ rằng tôi đã không có bộ đệm đầu ra được kích hoạt, nhưng với bổ sung của bạn nó hoạt động! Cảm ơn rất nhiều! –