• 技术文章 >php教程 >php手册

    PHP stream

    2016-06-21 08:54:51原创471
    作用:创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。
    函数原型:resource stream_context_create ([ array $options [, array $params ]] )
    用法
    例子一:

    复制代码 代码如下:


    $opts = array( 'http-->array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
    "Cookie: foo=bar\r\n"
    )
    );
    $context = stream_context_create($opts);
    /* Sends an http request to www.jb51.net
    with additional headers shown above */
    $fp = fopen('http://www.jb51.net', 'r', false, $context);
    fpassthru($fp);
    fclose($fp);
    ?>


    例子二:

    复制代码 代码如下:


    $opts = array( 'http-->array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
    "Cookie: foo=bar\r\n"
    )
    );
    $context = stream_context_create($opts);
    ?>
    You would setup the header this way:
    $opts = array( 'http-->array(
    'method'=>"GET",
    'header'=>array("Accept-language: en",
    "Cookie: foo=bar",
    "Custom-Header: value")
    )
    );
    $context = stream_context_create($opts);
    ?>


    例子三:

    复制代码 代码如下:


    $opts = array('http' => array('proxy' => 'tcp://127.0.0.1:8080', 'request_fulluri' => true));
    $context = stream_context_create($opts);
    $data = file_get_contents('http://www.jb51.net', false, $context);
    echo $data;
    ?>


    例子四:

    复制代码 代码如下:


    function do_post_request($url, $postdata, $files = null)
    {
    $data = "";
    $boundary = "---------------------".substr(md5(rand(0,32000)), 0, 10);
    //Collect Postdata
    foreach($postdata as $key => $val)
    {
    $data .= "--$boundary\n";
    $data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n";
    }
    $data .= "--$boundary\n";
    //Collect Filedata
    foreach($files as $key => $file)
    {
    $fileContents = file_get_contents($file['tmp_name']);
    $data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file['name']}\"\n";
    $data .= "Content-Type: image/jpeg\n";
    $data .= "Content-Transfer-Encoding: binary\n\n";
    $data .= $fileContents."\n";
    $data .= "--$boundary--\n";
    }
    $params = array('http' => array(
    'method' => 'POST',
    'header' => 'Content-Type: multipart/form-data; boundary='.$boundary,
    'content' => $data
    ));
    $ctx = stream_context_create($params);
    $fp = fopen($url, 'rb', false, $ctx);
    if (!$fp) {
    throw new Exception("Problem with $url, $php_errormsg");
    }
    $response = @stream_get_contents($fp);
    if ($response === false) {
    throw new Exception("Problem reading data from $url, $php_errormsg");
    }
    return $response;
    }
    //set data (in this example from post)
    //sample data
    $postdata = array(
    'name' => $_POST['name'],
    'age' => $_POST['age'],
    'sex' => $_POST['sex']
    );
    //sample image
    $files['image'] = $_FILES['image'];
    do_post_request("http://www.jb51.net", $postdata, $files);
    ?>



    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:data context array gt stream
    上一篇:phpMyadmin创建数据库及独立数据库帐号 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• mysql 数据备份类代码• PHP 采集程序原理分析篇• PHP类中的魔术方法(Magic Method)简明总结,magicmethod• 第十节--抽象方法和抽象类 -- Classes and Objects in PHP5 [10]• php mysql 数据库类
    1/1

    PHP中文网