我的应用程序通过http get请求发送urlencoded或base64encoded字符串,该字符串包含图像数据,大部分是从php文件下载,但我不知道php将如何从我的字符串下载图像urlencoded或base64encoded,请帮帮我们......我迷失了
答案 0 :(得分:2)
// we assume $imageData is PNG
$image = urldecode($imageData);
// or
$image = base64_decode($imageData);
// in case of force download change Content-Type: image/png to
// application/octet-stream and Content-Disposition: inline to attachment
header('Content-type: image/png');
header('Content-Disposition: inline; filename=' . md5($image) . '.png');
header('Content-Length: ' . strlen($image));
echo $image;
exit;
如果您不知道,请检测正确的Content-Type。但是浏览器应该能够自己自动检测它。
关于缓存的一些注意事项
PHP隐式发送标头,阻止浏览器缓存检索到的数据。我建议你手动设置这些标题(Cache-Control,Expires,Pragma)。要正常工作,每张图片都必须由唯一的网址提供。还要尽量避免开始会话。在具有公共访问权限的访问频繁的网站上,您可以轻松地使用冗余会话文件填充Web服务器。
$image = urlencode($imageData);
// or
$image = base64_decode($imageData);
if (!file_put_contents('abs/path/to/save/file.png', $image)) {
throw new Exception('Image could not be saved');
}