【发布时间】:2017-04-14 13:35:07
【问题描述】:
我正在做一个小项目,我从电子身份证读取数据。
值得一提的是,我正在使用 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 上都完美可见。
我已经阅读了一些类似的主题并尝试了以下方法:
- cURL
$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 种方法都会在我想要的目录中创建一个 empty .jpg 文件。
如果我需要提供任何额外的代码,请告诉我。 希望有人能指出我的错误
【问题讨论】:
-
我不确定,但要做到这一点,您是否需要在 curl 中设置会话 cookie,以便它知道如何设置会话并获取图像?
-
$filename实际上应该包含什么?你使用它,但我没有看到任何定义它的地方......你有没有尝试强制标头? -
这是在同一个网络服务器上吗?您是否有理由通过卷曲服务器来执行此操作,为什么不再次将图像从会话中拉出?
-
$filename 包含一系列从身份提供的数字。图像的名称类似于 ex.: 93062339141.jpg。我将尝试设置 cookie 和强制标头。我会保持更新。
-
您可以通过 url 传递文件名。例如使用网址:my-url.com/photo.php?filename=your-file-name。然后你必须更新 photo.php 以便它检查文件名是否在 url 中给出