我想使用<a href="">Download</a>
之类的链接下载此网址返回的图片,点击此链接下载框应该会出现,以便用户可以将图像保存到他/她的系统中。这是返回图片的网址
http://chart.apis.google.com/chart?chs=300x300&cht=qr&chld=L|0&chl=http%253A%252F%252Fnetcane.com%252Fprojects%252Fyourl%252F3
我不想将图像保存到服务器吗?
答案 0 :(得分:4)
您可以通过在服务器上设置简单的PHP下载脚本,将文件流式传输或代理给用户。当用户点击下面的download.php
脚本时,它会设置正确的标题,以便他们的浏览器要求他们保存下载。然后,它会将图表图像从谷歌流式传输到用户浏览器。
在您的HTML中:
<a href="download.php">Download</a>
在download.php中:
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="chart.png"');
$image = file_get_contents('http://chart.apis.google.com/chart?chs=300x300&cht=qr&chld=L|0&chl=http%253A%252F%252Fnetcane.com%252Fprojects%252Fyourl%252F3');
header('Content-Length: ' . strlen($image));
echo $image;
在您的HTML中:
<?php
$url = 'http://chart.apis.google.com/chart?my-generated-chart-api-url';
<a href="download.php?url=<?php echo urlencode($url); ?>">Download</a>
在download.php中:
$url = '';
if(array_key_exists('url', $_GET)
and filter_var($_GET['url'], FILTER_VALIDATE_URL)) {
$url = $_GET['url'];
}
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="chart.png"');
$image = file_get_contents($url);
header('Content-Length: ' . strlen($image));
echo $image;
答案 1 :(得分:0)
不,不是真的。由于图像是在chart.apis.google.com
生成的,并且您无法控制该服务器,因此无法使其向该图像发送Content-Disposition
标头;因此,浏览器将显示该图像。
你在技术上可以做什么(但我不确定Google的ToS是否允许它,更好地检查),是链接到你的服务器,它将代理下载并添加{{1标题。
答案 2 :(得分:0)
我相信你无法做到这一点。 最接近的是使用PHP动态获取图像数据,然后使用标题 Content-Disposition:attachment;文件名= qr.png 强>
<?php
$img_data = file_get_contents("http://chart.apis.google.com/chart?chs=300x300&cht=qr&chld=L|0&chl=http%253A%252F%252Fnetcane.com%252Fprojects%252Fyourl%252F3");
header("Content-Type: image/png");
header("Content-Length: " . strlen($img_data));
header("Content-Disposition: attachment; filename=qr.png");
print $img_data;
?>
代码未经测试,但我认为你得到了它的要点。 希望它能满足您的需求。