Hàm readfile() trong PHP

24/11/2020 - lượt xem
Chia sẻ
 
Rate this post

Định nghĩa.

Hàm readfile() sẽ đọc file được truyền vào. In kết quả đọc được ra màn hình.

Cú pháp.

Cú pháp:

readfile ( string $filename [, bool $use_include_path = FALSE [, resource $context ]] ) : int

Trong đó.

  • $filename là đường dẫn tới file cần đọc.
  • $use_include_path là tham số quy định việc tìm kiếm file trong include_path.
  • $context thường được bỏ qua nếu bạn không sử dụng ngữ cảnh đặc biệt.

Giá trị trả về.

  • Trả về số byte được đọc từ tệp khi thành công hoặc FALSE khi không thành công.

Ví dụ.

Ví dụ # 1.

code.

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
?>

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:

ghi chú.

  • Ghi chú: readfile () sẽ không xuất hiện bất kỳ vấn đề bộ nhớ nào, ngay cả khi gửi các tệp lớn, của chính nó. Nếu bạn gặp phải lỗi hết bộ nhớ, hãy đảm bảo rằng bộ đệm đầu ra được tắt với ob_get_level ().
  • Một URL có thể được sử dụng làm tên tệp với chức năng này nếu fopen wrappers đã được bật. Xem fopen() để biết thêm chi tiết về cách chỉ định tên tệp. Xem Giao thức được Supported Protocols and Wrappers đến thông tin về những khả năng mà các trình bao bọc khác nhau có, ghi chú về việc sử dụng chúng và thông tin về bất kỳ biến xác định trước nào mà chúng có thể cung cấp.
  • Lưu ý: Hỗ trợ ngữ cảnh đã được thêm vào với PHP 5.0.0. Để biết mô tả về ngữ cảnh, hãy tham khảo Streams.

Hàm liên quan.

Thông tin thêm.

  • nếu bạn cần giới hạn tốc độ tải xuống, hãy sử dụng mã này
    <?php
    $local_file 'file.zip';
    $download_file 'name.zip';
    
    // set the download rate limit (=> 20,5 kb/s)
    $download_rate 20.5;
    if(file_exists($local_file) && is_file($local_file))
    {
        header('Cache-control: private');
        header('Content-Type: application/octet-stream');
        header('Content-Length: '.filesize($local_file));
        header('Content-Disposition: filename='.$download_file);
    
        flush();
        $file fopen($local_file"r");
        while(!feof($file))
        {
            // send the current file part to the browser
            print fread($fileround($download_rate 1024));
            // flush the content to the browser
            flush();
            // sleep one second
            sleep(1);
        }
        fclose($file);}
    else {
        die('Error: The file '.$local_file.' does not exist!');
    }
    
    ?>
  • Chỉ là một lưu ý cho những người gặp phải vấn đề về tên chứa khoảng trắng (ví dụ: “test test.pdf”). Trong các ví dụ (99% thời gian) bạn có thể tìm thấy header (‘Nội dung-Bố trí: tệp đính kèm; tên tệp =’. basename ($ tệp)) nhưng cách chính xác để đặt tên tệp là trích dẫn nó (dấu ngoặc kép): header (‘Nội dung-Bố trí: file đính kèm; filename = “‘. basename ($ file). ‘”‘); Một số trình duyệt có thể hoạt động mà không có dấu ngoặc kép, nhưng chắc chắn không phải là Firefox và như Mozilla giải thích, phần trích dẫn của tên tệp trong phần bố trí nội dung là theo RFC

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm readfile() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm