php接收二进制流(图片)生成图片文件文件

<?php
    /** 二进制流生成文件
    * $_POST 无法解释二进制流,需要用到 $GLOBALS['HTTP_RAW_POST_DATA'] 或 php://input
    * $GLOBALS['HTTP_RAW_POST_DATA'] 和 php://input 都不能用于 enctype=multipart/form-data
    * @param    String  $file   要生成的文件路径
    * @return   boolean
    */
    function binary_to_file($file){
        $content = $GLOBALS['HTTP_RAW_POST_DATA'];  // 需要php.ini设置
        if(empty($content)){
            $content = file_get_contents('php://input');    // 不需要php.ini设置,内存压力小
        }
        $ret = file_put_contents($file, $content, true);
        return $ret;
    }
 
    // demo
    binary_to_file('photo/test.png');
?>

报错:Undefined index: HTTP_RAW_POST_DATA的解决办法

替换为

<?php
    /** 二进制流生成文件
    * $_POST 无法解释二进制流,需要用到 $GLOBALS['HTTP_RAW_POST_DATA'] 或 php://input
    * $GLOBALS['HTTP_RAW_POST_DATA'] 和 php://input 都不能用于 enctype=multipart/form-data
    * @param    String  $file   要生成的文件路径
    * @return   boolean
    */
    function binary_to_file($file){
        $content= isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");
//php7 可以写为  $content=$GLOBALS['HTTP_RAW_POST_DATA']??file_get_contents('php://input');
        $ret = file_put_contents($file, $content, true);
        return $ret;
    }
 
    // demo
    binary_to_file('photo/test.png');
?>
发布了2376 篇原创文章 · 获赞 26 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/lxw1844912514/article/details/103603882