PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

在数据库管理中加入备份下载功能

管理员 2024-12-14
Fastadmin
5

效果图:
image.png

实现步骤:
1、在备份列表模板中,文件名加入超级链接。文件位于:
applicationadminviewgeneraldatabaseindex.html

<td><a href="{:url('download?file=')}<%=backuplist[i].file%>"> <%=backuplist[i].file%> </a></td>

2、在控制器中,加入download()操作。在文件:
applicationadmincontrollergeneralDatabase.php

/**     * 下载备份文件     * @internal     */    public function download()    {        $config = get_addon_config('database');        $file = $this->request->get('file');        $backupDir = ROOT_PATH . 'public' . DS . $config['backupDir'];        $file2 = $backupDir . $file;        $download =  new thinkresponseDownload($file2);        $download->mimeType('zip');        return $download->name($file);    }

3、在
thinkphplibrarythinkresponse
目录中,加入Download.php文件(可以在thinkphp5.1.21+中找到,文档参考):

<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------namespace thinkresponse;use thinkException;use thinkResponse;class Download extends Response{   protected $expire = 360;   protected $name;   protected $mimeType;   protected $isContent = false;   protected $openinBrowser = false;   /**    * 处理数据    * @access protected    * @param  mixed $data 要处理的数据    * @return mixed    * @throws Exception    */   protected function output($data)   {       if (!$this->isContent && !is_file($data)) {           throw new Exception('file not exists:' . $data);       }       ob_end_clean();       if (!empty($this->name)) {           $name = $this->name;       } else {           $name = !$this->isContent ? pathinfo($data, PATHINFO_BASENAME) : '';       }       if ($this->isContent) {           $mimeType = $this->mimeType;           $size     = strlen($data);       } else {           $mimeType = $this->getMimeType($data);           $size     = filesize($data);       }       $this->header['Pragma']                    = 'public';       $this->header['Content-Type']              = $mimeType ?: 'application/octet-stream';       $this->header['Cache-control']             = 'max-age=' . $this->expire;       $this->header['Content-Disposition']       = $this->openinBrowser ? 'inline' : 'attachment; filename="' . $name . '"';       $this->header['Content-Length']            = $size;       $this->header['Content-Transfer-Encoding'] = 'binary';       $this->header['Expires']                   = gmdate("D, d M Y H:i:s", time() + $this->expire) . ' GMT';       $this->lastModified(gmdate('D, d M Y H:i:s', time()) . ' GMT');       $data = $this->isContent ? $data : file_get_contents($data);       return $data;   }   /**    * 设置是否为内容 必须配合mimeType方法使用    * @access public    * @param  bool $content    * @return $this    */   public function isContent($content = true)   {       $this->isContent = $content;       return $this;   }   /**    * 设置有效期    * @access public    * @param  integer $expire 有效期    * @return $this    */   public function expire($expire)   {       $this->expire = $expire;       return $this;   }   /**    * 设置文件类型    * @access public    * @param  string $filename 文件名    * @return $this    */   public function mimeType($mimeType)   {       $this->mimeType = $mimeType;       return $this;   }   /**    * 获取文件类型信息    * @access public    * @param  string $filename 文件名    * @return string    */   protected function getMimeType($filename)   {       if (!empty($this->mimeType)) {           return $this->mimeType;       }       $finfo = finfo_open(FILEINFO_MIME_TYPE);       return finfo_file($finfo, $filename);   }   /**    * 设置下载文件的显示名称    * @access public    * @param  string $filename 文件名    * @param  bool   $extension 后缀自动识别    * @return $this    */   public function name($filename, $extension = true)   {       $this->name = $filename;       if ($extension && false === strpos($filename, '.')) {           $this->name .= '.' . pathinfo($this->data, PATHINFO_EXTENSION);       }       return $this;   }   /**    * 设置是否在浏览器中显示文件    * @access public    * @param  bool  $openinBrowser 是否在浏览器中显示文件    * @return $this    */   public function openinBrowser($openinBrowser) {       $this->openinBrowser = $openinBrowser;       return $this;   }}

希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部