php如何实现图片点击下载,并保存本地?

###

  今天因为工作需要,完成了一个二维码的生成图片,并支持点击下载的

###

控制器文件,相关代码

 1  // 生成二维码
 2         $url = action('Apih5\\VersionController@download', ['provider' => $request->channel]);
 3 // 保存二维码到本地,并返回二维码
 4         $qrcode = $this->app['version']->qrcode($url);
 5         $dir_path = '../public/static/versionChannel/';
 6         $fileName = $request->channel.'.png';
 7         $qrcode = base64_decode( $qrcode); 
 8 // 保存到本地,如果不存在文件,则创建新的
 9         $this->app['version']->saveVersionQrcode($qrcode, $dir_path, $fileName);
10 
11  // 保存二维码到本地,并返回二维码
12         $qrcode = $this->app['version']->qrcode($request->channel, $url);

后台实现下载的控制器

 1 <?php
 2 
 3 namespace App\Http\Controllers\Apih5;
 4 
 5 use Illuminate\Http\Request;
 6 
 7 use App\Http\Requests;
 8 use App\Http\Controllers\Controller;
 9 
10 class VersionController extends Controller
11 {
12     //版本二维码下载
13     public function download($provider, Request $request)
14     {
15         // 下载二维码
16         $contenttype = 'image/jpeg';
17         $dir_path = '../public/static/versionChannel/';
18         $fileName = $provider.'.png';
19         $fileurl = $dir_path.$fileName;
20 
21         header("Cache-control: private");
22         header("Content-type: $contenttype"); //设置要下载的文件类型
23         header("Content-Length:" . filesize($fileurl)); //设置要下载文件的文件大小
24         header("Content-Disposition: attachment; filename=" . urldecode($fileName)); //设置要下载文件的文件名
25 
26         readfile($fileurl);
27 
28     }
29 }

方法所在文件

 1  /**
 2      * 生成二维码 for apih5/VersionController
 3      * @param  [type] $id [description]
 4      * @return [type]     [description]
 5      */
 6     public function qrcode($url)
 7     {
 8         $qrcode = new QrcodeHelper;
 9         $qrcode = $qrcode->getVersionChannelQr($url);
10 
11         return  $qrcode;
12     }
13 
14     /**
15     *  保存二维码到本地文件夹
16     */
17     public function saveVersionQrcode($qrcodeData, $dir_path, $fileName)
18     {
19         // 判断目录是否存在,不存在则生成
20         if (!file_exists($dir_path) ) {
21             mkdir("$dir_path",0777, true);
22  }
23         $fileurl = $dir_path.$fileName;
24         // 保存到本地,如果不存在文件,则创建新的
25         file_put_contents($fileurl, $qrcodeData, FILE_USE_INCLUDE_PATH);
26     }

前台试图

显示二维码图片的位置

1  <td>
2 
3       <a href="{{ action('Apih5\\VersionController@download',['provider' => $version->channel]) }}" >
4           <img width="100px" src="{{url('/static/versionChannel/'.$version->channel.'.png')}}"/>
5       </a>
6 </td>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春哥111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值