从PHP URL保存图像-返回空图像

从PHP URL保存图像-返回空图像,php,html,image,curl,Php,Html,Image,Curl,我正在做一个小项目,从电子身份证中读取数据 值得一提的是,我正在使用LightOpenID PHP库从eID获取所有数据 现在我被困在试图保存显示在http://my-url.com/photo.php photo.php包含: 这些图像在index.php()和photo.php上都非常清晰可见 我已经阅读了一些类似的主题,并尝试了以下方法: 卷曲 文件内容 复制 甚至尝试了基本副本: copy( "http://my-url/photo.php", './photo/' . $filenam

我正在做一个小项目,从电子身份证中读取数据

值得一提的是,我正在使用LightOpenID PHP库从eID获取所有数据

现在我被困在试图保存显示在
http://my-url.com/photo.php

photo.php包含:

这些图像在index.php(
)和photo.php上都非常清晰可见

我已经阅读了一些类似的主题,并尝试了以下方法:

  • 卷曲
  • 文件内容
  • 复制
  • 甚至尝试了基本副本:

    copy( "http://my-url/photo.php", './photo/' . $filename . '.jpg');
    
    这三种方法都会在我想要的目录中创建一个empty.jpg文件

    如果我需要提供任何额外的代码,请告诉我。
    希望有人能指出我的错误

    终于找到了解决办法

    我仅使用以下方法解码base64url一次:

    function base64url_decodeOnce($base64url){
        $base64 = strtr($base64url, '-_', '+/');
        return ($base64);
    }
    
    这样,我就可以将$base64输出用于:

    $data = 'data:image/jpeg;base64,' . $base64data .'\'';
    list($type, $data) = explode(';', $data);
    list(, $data)      = explode(',', $data);
    $data = base64_decode($data);
    file_put_contents('./photo/' . $filename . '.jpg', $data);
    

    终于找到了解决办法

    我仅使用以下方法解码base64url一次:

    function base64url_decodeOnce($base64url){
        $base64 = strtr($base64url, '-_', '+/');
        return ($base64);
    }
    
    这样,我就可以将$base64输出用于:

    $data = 'data:image/jpeg;base64,' . $base64data .'\'';
    list($type, $data) = explode(';', $data);
    list(, $data)      = explode(',', $data);
    $data = base64_decode($data);
    file_put_contents('./photo/' . $filename . '.jpg', $data);
    

    我不确定,但要做到这一点,您不需要在curl中设置会话cookie,以便它知道如何设置会话并获取映像吗?
    $filename
    实际上应该包含什么?你使用它,但我看不到任何地方,它的定义。。。你有没有尝试过强制使用头文件?这是在同一个Web服务器上吗?通过卷曲服务器是否有这样做的理由,为什么不再次将映像从会话中拉出?$filename包含一系列由标识提供的数字。图像的名称类似于:93062339141.jpg。我将尝试设置cookies和强制标题。我会保持更新。你可以通过url传递文件名。例如,请使用url:。然后,您必须更新photo.php,以便它检查URL中是否提供了文件名。我不确定,但要做到这一点,您不需要在curl中设置会话cookie,以便它知道如何设置会话并获取图像吗?
    $filename
    实际上应该包含哪些内容?你使用它,但我看不到任何地方,它的定义。。。你有没有尝试过强制使用头文件?这是在同一个Web服务器上吗?通过卷曲服务器是否有这样做的理由,为什么不再次将映像从会话中拉出?$filename包含一系列由标识提供的数字。图像的名称类似于:93062339141.jpg。我将尝试设置cookies和强制标题。我会保持更新。你可以通过url传递文件名。例如,请使用url:。然后您必须更新photo.php,以便它检查url中是否给出了文件名
    function base64url_decodeOnce($base64url){
        $base64 = strtr($base64url, '-_', '+/');
        return ($base64);
    }
    
    $data = 'data:image/jpeg;base64,' . $base64data .'\'';
    list($type, $data) = explode(';', $data);
    list(, $data)      = explode(',', $data);
    $data = base64_decode($data);
    file_put_contents('./photo/' . $filename . '.jpg', $data);