我在从 url 下载图像时遇到问题,
$url = 'http://example.com/image.php';
$img = '/my/folder/flower.gif';
file_put_contents($img, file_get_contents($url));
在这个代码文件中保存在我的服务器文件夹中。但我需要不保存在我的服务器中,它需要下载给用户。
使用application/octet-stream代替 image/jpg:
如果在具有 application/octet-stream 内容类型的响应中使用 [the Content-Disposition] 标头,则暗示用户代理不应显示响应,而是直接输入“将响应另存为...”对话。 — RFC 2616 – 19.5.1 内容处置
EDIT
function forceDownloadQR($url, $width = 150, $height = 150) {
$url = urlencode($url);
$image = 'http://chart.apis.google.com/chart?chs='.$width.'x'.$height.'&cht=qr&chl='.$url;
$file = file_get_contents($image);
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=qrcode.png");
header("Cache-Control: public");
header("Content-length: " . strlen($file)); // tells file size
header("Pragma: no-cache");
echo $file;
die;
}
forceDownloadQR('http://google.com');
如果您想将文件下载到您的网络服务器(并保存),只需使用copy()
copy($url, 'myfile.png');
设置正确的标题并回显它而不是 file_put_contents
$url = 'http://example.com/image.php';
header('Content-Disposition: attachment; filename:image.jpg');
echo file_get_contents($url);