In tài liệu bằng php

Send file with HTTPRange support (partial download):

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }

  $size=filesize($location);
  $time=date('r',filemtime($location));

  $fm=@fopen($location,'rb');
  if(!$fm)
  { header ("HTTP/1.0 505 Internal server error");
    return;
  }

  $begin=0;
  $end=$size;

  if(isset($_SERVER['HTTP_RANGE']))
  { if(preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches))
    { $begin=intval($matches[0]);
      if(!empty($matches[1]))
        $end=intval($matches[1]);
    }
  }

  if($begin>0||$end<$size)
    header('HTTP/1.0 206 Partial Content');
  else
    header('HTTP/1.0 200 OK');

________số 8

  $cur=$begin;
  fseek($fm,$begin,0);

Send file with HTTPRange support (partial download):0

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
0

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
1

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
2

PHP cung cấp một số luồng I/O khác nhau cho phép truy cập vào các luồng đầu vào và đầu ra của riêng PHP, bộ mô tả tệp đầu vào, đầu ra và tệp lỗi tiêu chuẩn, các luồng tệp tạm thời trong bộ nhớ và đĩa được hỗ trợ và các bộ lọc có thể thao tác các tài nguyên tệp khác

php. //stdin, php. // thiết bị xuất chuẩn và php. //stderr

php. //stdin, php. // thiết bị xuất chuẩn và php. //stderr cho phép truy cập trực tiếp vào luồng đầu vào hoặc đầu ra tương ứng của quy trình PHP. Luồng tham chiếu một bộ mô tả tệp trùng lặp, vì vậy nếu bạn mở php. //stdin và sau đó đóng nó, bạn chỉ đóng bản sao của bộ mô tả-luồng thực tế được tham chiếu bởi Send file with HTTPRange support (partial download):4 không bị ảnh hưởng. Bạn chỉ nên sử dụng các hằng số Send file with HTTPRange support (partial download):4, Send file with HTTPRange support (partial download):6 và Send file with HTTPRange support (partial download):7 thay vì mở luồng theo cách thủ công bằng các trình bao bọc này

php. //stdin là chỉ đọc, trong khi php. // thiết bị xuất chuẩn và php. //stderr chỉ ghi

php. //đầu vào

php. // đầu vào là luồng chỉ đọc cho phép bạn đọc dữ liệu thô từ phần thân yêu cầu. php. // đầu vào không khả dụng với Send file with HTTPRange support (partial download):8

php. //đầu ra

php. //đầu ra là luồng chỉ ghi cho phép bạn ghi vào cơ chế bộ đệm đầu ra theo cách tương tự như in và lặp lại

php. //fd

php. //fd cho phép truy cập trực tiếp vào bộ mô tả tệp đã cho. Ví dụ: php. //fd/3 đề cập đến bộ mô tả tệp 3

php. // bộ nhớ và php. //nhiệt độ

php. // bộ nhớ và php. // temp không thể tái sử dụng, tôi. e. sau khi các luồng đã bị đóng, không có cách nào để tham khảo lại chúng

file_get_contents() là cách ưu tiên để đọc nội dung của tệp thành chuỗi. Nó sẽ sử dụng các kỹ thuật lập bản đồ bộ nhớ nếu được hệ điều hành của bạn hỗ trợ để nâng cao hiệu suất

Ghi chú

Nếu bạn đang mở một URI có ký tự đặc biệt, chẳng hạn như dấu cách, bạn cần mã hóa URI bằng urlencode()

Thông số

Send file with HTTPRange support (partial download):9

Tên file cần đọc

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
00

Ghi chú

Hằng số function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
01 có thể được sử dụng để kích hoạt tìm kiếm đường dẫn bao gồm. Điều này là không thể nếu tính năng gõ nghiêm ngặt được bật, vì function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
01 là một kiểu int. Sử dụng function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
03 thay thế

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
04

Tài nguyên ngữ cảnh hợp lệ được tạo bằng stream_context_create(). Nếu không cần sử dụng ngữ cảnh tùy chỉnh, bạn có thể bỏ qua tham số này trước function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
5

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
06

Phần bù nơi bắt đầu đọc trên luồng ban đầu. Độ lệch âm được tính từ cuối luồng

Tìm kiếm (function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
06) không được hỗ trợ với các tệp từ xa. Cố gắng tìm kiếm trên các tệp không cục bộ có thể hoạt động với độ lệch nhỏ, nhưng điều này không thể đoán trước được vì nó hoạt động trên luồng được đệm

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
08

Độ dài tối đa của dữ liệu đọc. Mặc định là đọc cho đến khi kết thúc tệp. Lưu ý rằng tham số này được áp dụng cho luồng do bộ lọc xử lý

Giá trị trả về

Hàm trả về dữ liệu đã đọc hoặc function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
9 khi lỗi

Cảnh báo

Hàm này có thể trả về giá trị Boolean function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
9, nhưng cũng có thể trả về giá trị không phải Boolean có giá trị là function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
9. Vui lòng đọc phần về Booleans để biết thêm thông tin. Sử dụng toán tử === để kiểm tra giá trị trả về của hàm này

Lỗi/Ngoại lệ

Lỗi cấp độ   $size=filesize($location);
  $time=date('r',filemtime($location));
22 được tạo nếu không thể tìm thấy Send file with HTTPRange support (partial download):9, function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
08 nhỏ hơn 0 hoặc nếu tìm kiếm function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
06 được chỉ định trong luồng không thành công

Khi file_get_contents() được gọi trên một thư mục, lỗi cấp độ   $size=filesize($location);
  $time=date('r',filemtime($location));
22 được tạo trên Windows và kể từ PHP 7. 4 trên các hệ điều hành khác

Nhật ký thay đổi

Phiên bảnMô tả8. 0. 0____208 hiện không có giá trị. 7. 1. 0Hỗ trợ cho các function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
06 âm đã được thêm vào

ví dụ

Ví dụ #1 Lấy và xuất mã nguồn của trang chủ của một trang web

  $size=filesize($location);
  $time=date('r',filemtime($location));
29

Ví dụ #2 Tìm kiếm trong include_path

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
90

Ví dụ #3 Đọc một phần của tệp

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
91

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

string(14) "lle Bjori Ro" 

Ví dụ #4 Sử dụng bối cảnh luồng

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
92

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
93

function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
94

ghi chú

Ghi chú. Hàm này an toàn nhị phân

Mẹo

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 trình bao bọc fopen đã đượ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 và Trình bao bọc được hỗ trợ để biết các liên kết đến thông tin về khả năng của các trình bao bọc khác nhau, ghi chú về cách sử dụng và thông tin về bất kỳ biến được xác định trước nào mà chúng có thể cung cấp

Cảnh báo

Khi sử dụng SSL, Microsoft IIS sẽ vi phạm giao thức bằng cách đóng kết nối mà không gửi chỉ báo function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
95. PHP sẽ báo cáo điều này là "SSL. Fatal Protocol Error" khi bạn xem hết dữ liệu. Để giải quyết vấn đề này, giá trị của error_reporting phải được hạ xuống mức không bao gồm cảnh báo. PHP có thể phát hiện phần mềm máy chủ IIS có lỗi khi bạn mở luồng bằng trình bao bọc function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
96 và sẽ chặn cảnh báo. Khi sử dụng fsockopen() để tạo ổ cắm function smartReadFile($location, $filename, $mimeType='application/octet-stream')
{ if(!file_exists($location))
  { header ("HTTP/1.0 404 Not Found");
    return;
  }
97, nhà phát triển chịu trách nhiệm phát hiện và loại bỏ cảnh báo này