首页 > 代码库 > php如何实现图片点击下载,并保存本地?-----本例子为二维码的生成图片,并支持点击下载

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="http://www.mamicode.com/{{ action(‘Apih5//VersionController@download‘,[‘provider‘ => $version->channel]) }}" >
4           <img width="100px" src="http://www.mamicode.com/{{url(‘/static/versionChannel/‘.$version->channel.‘.png‘)}}"/>
5       </a>
6 </td>

 

php如何实现图片点击下载,并保存本地?-----本例子为二维码的生成图片,并支持点击下载