当前位置: 首页 > 阅读正文

php使用file_get_contents获取文件,进行http请求,上传文件

2021年9月7日   50 次   1251字数

此函数从php4.3开始内置。

file_get_contents() 把整个文件读入一个字符串中。

该函数是用于把文件的内容读入到一个字符串中的首选方法。如果服务器操作系统支持,还会使用内存映射技术来增强性能。

可以使用它进行:

  • 获取本地文件
  • 进行http请求(需开启了fopen函数,默认开启)
  • http文件上传

基本语法

string file_get_contents(path,include_path,context,start,max_length)

参数类型描述
pathstring必需。规定要读取的文件,或者url。
include_pathint可选。如果您还想在 include_path(在 php.ini 中)中搜索文件的话,请设置该参数为 ‘1’。
如果开启了严格类型,使用true代替
context文本数据流可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 NULL,则忽略。
offsetint可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 中新增的。
从php7.1开始支持负数,表示尾部偏移
max_lengthint可选。规定读取的字节数。该参数是 PHP 5.1 中新增的。

获取本地文件

以字符串形式返回某个资源文件内容

<?php
// 如果开启了严格类型,例如 declare(strict_types=1);
$file = file_get_contents('./people.txt', true);
// 否则就这样写
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>

发送http请求

文件名的位置,可以使用url,就表示发送http请求

默认是get请求且其他参数默认,此时我们可以创建“文本数据流”形式的参数,里面写入一些http请求参数,比如请求头,请求方式等

上传文件

上传文件也是基于http请求,仅需要在请求中,添加一个空行,通常是表现为2个连续的\r\n,然后添加body

注意,对于http1.1来说,需要判断body长度以检测是否发送完毕,所以上传文件时,务必在header中添加Content-Length

<?php
$data = array('foo' => 'bar');
$data = "abc";  // 要上传的文件数据
$opts = array(
    'http' => array(
        'method' => 'POST', 
        'header' => 'Content-type: application/x-www-form-urlencodedrn\r\n'. 'Content-Length: ' . strlen($data) . '\r\n'.'\r\n',
        'content' => $data));
$context = stream_context_create($opts);
$html = file_get_contents('https://www.52dixiaowo.com', false, $context);
echo $html;
?>

本篇完,还有疑问?留下评论吧

发表评论