You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PHP或JavaScript实现URL中二维码图片的下载?

实现点击按钮下载远程二维码图片的方案

方案一:纯JavaScript前端实现

直接在浏览器中处理,无需后端服务,能避开跨域限制问题:

<button onclick="downloadQRCode()">下载二维码</button>

<script>
function downloadQRCode() {
    const qrUrl = 'https://quickchart.io/qr?text=http://tapo.app&dark=000&light=fff&ecLevel=H&margin=1&size=500&centerImageSizeRatio=0.4&centerImageUrl=https://app.tapo.app/Logo-Big.png';
    
    fetch(qrUrl)
        .then(res => res.blob())
        .then(blob => {
            const blobUrl = URL.createObjectURL(blob);
            const a = document.createElement('a');
            a.href = blobUrl;
            a.download = 'tapo_qr_code.png';
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
            URL.revokeObjectURL(blobUrl);
        })
        .catch(err => {
            console.error('下载失败:', err);
            alert('下载图片失败,请检查链接或网络');
        });
}
</script>

该方法通过Fetch API将远程图片转为Blob对象,生成临时URL后触发浏览器下载,最后清理临时资源,兼容性较好。

方案二:PHP后端实现

适合需要后端统一管控(如隐藏原始链接、添加权限验证)的场景:

前端按钮

<button onclick="downloadViaPHP()">通过PHP下载二维码</button>

<script>
function downloadViaPHP() {
    window.location.href = 'download_qr.php';
}
</script>

PHP处理文件(download_qr.php)

<?php
$qrUrl = 'https://quickchart.io/qr?text=http://tapo.app&dark=000&light=fff&ecLevel=H&margin=1&size=500&centerImageSizeRatio=0.4&centerImageUrl=https://app.tapo.app/Logo-Big.png';

// 用cURL获取图片内容(兼容性比file_get_contents更好)
$ch = curl_init($qrUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$imageContent = curl_exec($ch);
curl_close($ch);

if (!$imageContent) {
    http_response_code(404);
    echo '无法获取图片资源';
    exit;
}

// 设置下载响应头
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename="tapo_qr_code.png"');
header('Content-Length: ' . strlen($imageContent));

echo $imageContent;
exit;
?>

PHP先获取远程图片内容,再通过响应头触发浏览器下载,若服务器禁用cURL,可替换为file_get_contents($qrUrl)(需确保allow_url_fopen开启)。

内容的提问来源于stack exchange,提问作者user3521690

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:50:29