如何通过PHP获取图像/ png内容

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了如何通过PHP获取图像/ png内容脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的第一篇Stack Overflow帖子,如果我使用了不正确的格式或约定,请原谅我.我正在尝试编写一个测试场景,它从网页POST(multipart / form-data)接收png图像,剥离已发布的图像并将其作为Content-tyPE:image / png转发给第三方.

我有一个PHP文件(catcher.PHP),它是转发图像的收件人. Post.PHP,将上传的图像发布到catcher.PHPPHP文件如下:

<?PHP
    $img = imagecreatefrompng($_FILES['myfile']['tmp_name']);
    imagepng($img);
    $opts = array(
        'http'=>array(
            'method'=>"POST",'content'=>$img,'header'=>"Content-Type: image/png\r\n"               
        )
    );

    $context = stream_context_create($opts);
    file_get_contents( "http://localhost/catcher.PHP",false,$context);
?>

Post.PHP从发布为multipart / form-data的网页上获取文件很好,但是我不确定如何访问catcher.PHP中的image / png内容.

我的问题是,在catcher.PHP中,我如何访问图像内容?我尝试过$_POST [‘content’]并获得以下错误:“Undefined index:content”.所以我知道我不是在寻找正确的数据.是否一个特定的超全局变量,如$_POST或$_REQUEST,我可以使用它来访问已发布的图像内容,还是有其他解决方案?

解析度
我能够使用以下catcher.PHP代码找到我要查找的结果:
    

$input = fopen("PHP://input","+r");
$destination = fopen($target_path,'w');

stream_copy_to_stream($input,$destination);

fclose($input);
fclose($destination);
?>

感谢Marc和brenden的快速回复

解决方法

imagepng($img)立即输出包含PNG的二进制垃圾.它没有被捕获到变量中.你实际发布的是一个字符串,可能是“GD Resource#7”或类似内容.

整个imagepng()位无论如何都是无用的 – 您将PNG解码为内存中表示,然后再次尝试重新编码为PNG.毫无意义的内存浪费,因为文件已经存在于磁盘上.你可以完成以下任务

<?PHP
if ($_FILES['myfile']['error'] !== UPLOAD_ERR_OK) {
   die("Upload Failed wITh error code " . $_FILES['myfile']['error']);
}

$opts = array(
    'http'=>array(
        'method'=>"POST",'content'=> file_get_contents($_FILES['myfile']['tmp_name']),'header'=>"Content-Type: image/png\r\n"               
    )
);

$context = stream_context_create($opts);
file_get_contents( "http://localhost/catcher.PHP",$context);

请注意添加检查上传成功 – 假设上传成功将导致您感到悲伤.

话虽这么说,你也没有做正确的POST文件上传.为了实现这一点,您必须使用< input type =“file”>实际模拟完整的HTML表单. PResent,和enctype =“multipart / form-data”等等.您所做的只是将原始PNG发送到服务器.

您可以通过在catcher脚本中读取PHP://输入来检索它.

脚本宝典总结

以上是脚本宝典为你收集整理的如何通过PHP获取图像/ png内容全部内容,希望文章能够帮你解决如何通过PHP获取图像/ png内容所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。