zoukankan      html  css  js  c++  java
  • 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 AppHttpControllersApih5;
     4 
     5 use IlluminateHttpRequest;
     6 
     7 use AppHttpRequests;
     8 use AppHttpControllersController;
     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>
  • 相关阅读:
    使用 cordova-plugin-wechat 分享返回后闪退解决方法
    恢复删除的表
    移动端还原设计图
    js文本差异比较
    windows使用nvm安装nodejs后升级npm报错
    windows添加右键菜单"在此处打开cmd窗口"
    cordova热更新
    js变量提升
    c# 判断字符串是否是日期格式需要注意的一点小问题
    剑指offer_和为S的两个数字
  • 原文地址:https://www.cnblogs.com/smallyi/p/6849785.html
Copyright © 2011-2022 走看看