我正在开展一个小项目,在那里我从电子身份证中读取数据。
值得一提的是,我正在使用LightOpenID PHP库来获取$attributes['']
来自eID的所有数据。
现在我试图保存图片,显示在http://my-url.com/photo.php
photo.php包含:
<?php
session_start();
$photo = $_SESSION['photo'];
header('Content-Type: image/jpeg');
echo($photo);
变量$photo
包含来自 index.php 的$_SESSION['photo']
:
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);
$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 文件。
如果我需要提供任何额外的代码,请告诉我。 希望有人可以指出我的错误
答案 0 :(得分:0)
终于找到了解决方案。
我只使用:
解码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);