Hàm fpassthru trong PHP.

27/07/2020 - lượt xem
Chia sẻ
 
Rate this post

Định Nghĩa.

Hàm fpassthru() sẽ xuất tất cả dữ liệu của file tính từ con trỏ tệp tin đến cuối file.

Cú pháp.

Cú pháp:

fpassthru ( resource $handle ) : int

Trong đó.

  • $handle – Con trỏ tệp phải hợp lệ và phải trỏ đến một tệp được mở thành công bởi fopen () hoặc  fsockopen() (và chưa được đóng bởi fclose ()).

Giá trị trả về.

  • Nếu xảy ra lỗi, fpassthru () trả về FALSE. Mặt khác, fpassthru () trả về số lượng ký tự được đọc từ tay cầm và chuyển qua đầu ra

Ví dụ.

Ví dụ # 1 Sử dụng fpassthru () với các tệp nhị phân

code:

<?php

// mở tệp ở chế độ nhị phân
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// gửi đúng tiêu đề
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;

?>

Ghi chú.

  • Khi sử dụng fpassthru () trên tệp nhị phân trên các hệ thống Windows, bạn nên đảm bảo mở tệp ở chế độ nhị phân bằng cách nối thêm b vào chế độ được sử dụng trong lệnh gọi fopen ().
  • Bạn được khuyến khích sử dụng cờ b khi xử lý các tệp nhị phân, ngay cả khi hệ thống của bạn không yêu cầu nó, do đó các tập lệnh của bạn sẽ dễ mang theo hơn.
  • Bạn có thể cần gọi  rewind() để đặt lại con trỏ tệp ở đầu tệp nếu bạn đã ghi dữ liệu vào tệp.
  • Nếu bạn chỉ muốn chuyển nội dung của tệp vào bộ đệm đầu ra, mà không sửa đổi trước hoặc tìm kiếm một phần bù cụ thể, bạn có thể muốn sử dụng readfile(), giúp bạn tiết kiệm cuộc gọi fopen ().

Hàm liên quan.

  • readfile() – Đọc một file
  • fopen() – Mở một file hoặc một URL
  • popen() – Opens process file pointer
  • fsockopen() – Mở kết nối ổ cắm Internet hoặc Unix

Thông tin thêm.

  • Nếu bạn mở một tệp mới, hãy viết nó và sau đó gọi fpassthru () nó không hoạt động. Trước tiên, bạn cần gọi rewind()  để đặt con trỏ tệp vào đầu tệp.
  • Passthru không làm việc cho tôi đối với các tệp lớn hơn khoảng 5Mb. Chỉ cần thêm “ob_end_clean ()”, tất cả đều hoạt động tốt, bao gồm các tệp> 50Mb.
    $ToProtectedFile=$pathUnder.$filename
    $handle = @fopen($ToProtectedFile, "rb");
    
    @header("Cache-Control: no-cache, must-revalidate");
    @header("Pragma: no-cache"); //keeps ie happy
    @header("Content-Disposition: attachment; filename= ".$NomFichier);
    @header("Content-type: application/octet-stream");
    @header("Content-Length: ".$SizeOfFile);
    @header('Content-Transfer-Encoding: binary');
    
    ob_end_clean();//required here or large files will not work
    @fpassthru($handle);//works fine now
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 fpassthru() 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