从PHP URL保存图像 - 返回空图像
问题描述:
我正在从一个小型项目中读取电子身份证数据。从PHP URL保存图像 - 返回空图像
可能值得一提的是,我使用LightOpenID PHP库从eID获取所有数据的$attributes['']
。
现在我卡住试图挽救其显示在http://my-url.com/photo.php
photo.php包含图像:
<?php
session_start();
$photo = $_SESSION['photo'];
header('Content-Type: image/jpeg');
echo($photo);
变量$photo
包含$_SESSION['photo']
这来自指数。 php:
function base64url_decode($base64url) {
$base64 = strtr($base64url, '-_', '+/');
$plainText = base64_decode($base64);
return ($plainText);
}
$encodedPhoto = $attributes['eid/photo'];
$photo = base64url_decode($encodedPhoto);
$_SESSION['photo'] = $photo;
图像在index.php(<?php echo '<img src="photo.php"/>'; ?>
)以及photo.php上都完美可见。
我已经在几个类似主题阅读并尝试了以下方法:
- 卷曲
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://my-url.com/photo.php'); $fp = fopen('./photo/' . $filename . '.jpg', 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp);
- File_put_contents
- 副本
$input = "my-url.com/photo.php"; $output = './photo/' . $filename . '.jpg'; file_put_contents($output, file_get_contents($input));
即使尝试了基本的副本:
copy("http://my-url/photo.php", './photo/' . $filename . '.jpg');
所有3种方法在目录中创建一个空的.JPG文件我也想要它们。
让我知道如果我需要提供任何额外的代码。 希望有人能指出我的错误
答
终于找到了解决办法。
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只有一次需要在curl中设置会话cookie,以便知道如何设置会话并获取图像? –
'$ filename'实际上应该包含什么?你使用它,但我没有看到它定义的任何地方......并且你试着强制标题? – OldPadawan
这是在同一个网络服务器上?你是否有理由通过卷曲服务器来做到这一点,为什么不把图像再次从会话中拉出来呢? –