Tôi có tình huống rất giống với người đã hỏi: Can I serve MP3 files with PHP? Về cơ bản tôi đang cố gắng bảo vệ tệp mp3 khỏi tải xuống trực tiếp, vì vậy người dùng phải thực hiện php để được xác thực trước. Dưới đây là mã của tôi:PHP Streaming MP3
header('Content-type: audio/mpeg');
header('Content-length: ' . filesize($file));
header('X-Pad: avoid browser bug');
Header('Cache-Control: no-cache');
header("Content-Transfer-Encoding: binary");
header("Content-Type: audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3");
readfile($file);
Dưới đây là vấn đề của tôi: Các tập tin chỉ đóng một đoạn rất nhỏ của đầu (thông qua Quicktime trong trình duyệt) và sau đó dừng lại - Quicktime dường như nghĩ rằng chiều dài của tập tin duy nhất là miễn là đoạn nó quản lý để tải xuống. Khi tôi tải lại - nó phát một đoạn lớn hơn một chút - bất kể nó đã tải xuống đến thời điểm đó.
Đó có phải là vấn đề trong tiêu đề tôi đang gửi không? Tôi sẽ phát tệp như thế nào? Có vấn đề gì nếu một con swf đang đọc từ tập tin đó?
Cảm ơn!
Cảm ơn tất cả các bạn câu trả lời. Mặc dù không có thứ nào trong số này chính xác là những gì đã giải quyết được vấn đề, nhiều người trong số họ đã gửi cho tôi đúng hướng. Nhiều đánh giá cao. Đối với các giải pháp đầy đủ xem câu trả lời của tôi dưới đây
Tôi đoán bạn không có lỗi đánh máy đó ("Tiêu đề") trong mã thực của bạn? Ngoài ra, bạn không cần hack X-Pad. Điều này chỉ cần thiết cho Netscape cổ xưa (xem http://george.hotelling.net/90percent/geekery/why_is_apache_sending_a_xpad_header.php). Bạn không cần Content-Transfer-Encoding, và bạn chỉ nên chỉ định Content-Type một lần (audio/mpeg là tốt). –
@Matthew Flaschen: Các hàm PHP phân biệt chữ hoa chữ thường, do đó, nó chỉ là một vấn đề nhất quán. Content-Type có thể là vấn đề thực sự ở đây. – Piskvor