H5跨域图片下载重命名实现

cjh| 阅读:1612 发表时间:2018-05-08 14:31:46 web

问题:H5 a标签无法对跨域图片设置download重命名

解决方案:

   1.点击下载时服务器请求跨域图片并暂存,下载完成后删除图片(避免造成空间资源占用).

   2.反向代理将跨域资源转入当前域(设置不重名路径定向到图片域名);

1.实现原理:

  •     a标签锚点设置成图片处理接口
  • ->实现图片暂存逻辑
  • ->接口重定向到当前域名下的图片路径
  • ->删除图片
  • ->退出

代码:

    public function qr_img()
    {
        $get = input();
        unset($get['id']);
        $url = 'https://pan.baidu.com/share/qrcode';
        $url = combineURL($url, $get);//url参数拼接
        $filename = './static/img/qrcode/' . input('id') . ".png";
        file_put_contents($filename, curl($url));
        $request = Request::instance();
        $domain = $request->domain();
        header("Location: ${domain}/${filename}");
        unlink($filename);//删除图片
        exit;
    }
<a href="目标接口?图片参数&id={{d.id}}" download="{{d.id}}_{{d.realname}}.png">  点击下载</a>

2.域名服务下配置该路由,并更换图片路径域名

        location /pan {
           rewrite  ^.+pan/?(.*)$   /$1  break;
           proxy_pass  https://pan.baidu.com/;
        }