| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User: 中闽 < 1464674022@qq.com >
 
-  * Date: 2019/12/5
 
-  * Time: 17:44
 
-  */
 
- namespace app\admin\controller;
 
- use app\admin\controller\base\Permissions;
 
- use app\common\model\FileManageModel;
 
- use app\common\service\UploadService;
 
- use file\DirHelper;
 
- use file\FileHelper;
 
- use file\ImgHelper;
 
- use file\PathHelper;
 
- use file\ZipHelper;
 
- use network\FtpHelper;
 
- use think\Env;
 
- use think\Exception;
 
- use think\Log;
 
- class FileManage extends Permissions
 
- {
 
-     public function index()
 
-     {
 
-         $relativePath = $this->request->param('relative_path', '', 'replaceDS,deleteEndDS');
 
-         $this->assign('relative_path', $relativePath);
 
-         if ($this->request->isAjax()) {
 
-             $keyword = $this->request->param('keyword', '', 'trim');
 
-             if (ifContain($keyword, DS)) {
 
-                 if (ifContain($keyword, FileManageModel::getRootDir())) {
 
-                     $keyword = str_replace(FileManageModel::getRootDir(), '', $keyword);
 
-                 } else {
 
-                     $keyword = deleteStartDS($keyword);
 
-                 }
 
-                 if (file_exists(FileManageModel::getRootDir() . $keyword)) {
 
-                     if (is_dir(FileManageModel::getRootDir() . $keyword)) {
 
-                         $relativePath2 = $keyword;
 
-                     } else {
 
-                         $relativePath2 = PathHelper::getParentDir($keyword);
 
-                     }
 
-                     if ($relativePath != $relativePath2) {
 
-                         $this->success($relativePath2, 'index');
 
-                     } else {
 
-                         $keyword = PathHelper::getFilename($keyword);
 
-                     }
 
-                 }
 
-             }
 
-             $data = FileManageModel::getFileList(trim($keyword), $relativePath);
 
-             return array('code' => 0, 'data' => $data);
 
-         } else {
 
-             $this->assign('fullPath', appendEndDS(appendEndDS(FileManageModel::getRootDir()) . $relativePath));
 
-             $arr = explode(DS, $relativePath);
 
-             $parentPath = end($arr) == $relativePath ? "" : str_replace(DS . end($arr), '', $relativePath);
 
-             $this->assign('parentPath', $parentPath);
 
-             return $this->fetch();
 
-         }
 
-     }
 
-     public function publish()
 
-     {
 
-         $rootpath = FileManageModel::getRootDir();
 
-         $relativePath = $this->request->param('relative_path', '', 'replaceDS');
 
-         $this->assign('relative_path', $relativePath);
 
-         $post = $this->request->post();
 
-         $fullname = $this->request->param('fullname');//文件名
 
-         $name = $this->request->param('name');//新增模板名
 
-         if ($fullname) {
 
-             //修改操作
 
-             $filePath = $rootpath . DS . $relativePath . DS . $fullname;
 
-             if ($this->request->isPost()) {
 
-                 $getfilemtime = $this->request->param('filemtime');
 
-                 if ($getfilemtime != filemtime($filePath)) {
 
-                     $this->error('文件版本不正确,请刷新后重新提交');
 
-                 }
 
-                 try {
 
-                     FileHelper::save($filePath, $post['content']);
 
-                 } catch (\Exception $e) {
 
-                     $this->error('修改失败.' . $e->getMessage());
 
-                 }
 
-                 $this->success('修改成功', '', filemtime($filePath));
 
-             } else {
 
-                 if (file_exists($filePath)) {
 
-                     if (is_dir($filePath)) {
 
-                         $this->error('不可以编辑目录');
 
-                     }
 
-                     if (ImgHelper::isImage($filePath)) {
 
-                         $this->error('不可以编辑图片');
 
-                     }
 
-                     $this->assign('fullname', $fullname);
 
-                     $this->assign('filemtime', filemtime($filePath));
 
-                     $this->assign('content', FileHelper::read($filePath));
 
-                     return $this->fetch();
 
-                 } else {
 
-                     $this->error('文件不存在');
 
-                 }
 
-             }
 
-         } else {
 
-             //新增操作
 
-             if ($this->request->isPost()) {
 
-                 $validate = new \think\Validate([
 
-                     ['name|模板名称', 'require'],
 
-                 ]);
 
-                 if (!$validate->check($post)) {
 
-                     $this->error('提交失败:' . $validate->getError());
 
-                 }
 
-                 $filePath = $rootpath . DS . $relativePath . DS . $name;
 
-                 if (file_exists($filePath)) {
 
-                     $this->error('该文件已存在,请修改名称');
 
-                 } else {
 
-                     try {
 
-                         FileHelper::save($filePath, $post['content']);
 
-                     } catch (\Exception $e) {
 
-                         $this->error('添加失败.' . $e->getMessage());
 
-                     }
 
-                 }
 
-                 $this->success('添加成功', 'index', ['relative_path' => $relativePath]);
 
-             } else {
 
-                 return $this->fetch();
 
-             }
 
-         }
 
-     }
 
-     public function delete()
 
-     {
 
-         if ($this->request->isAjax()) {
 
-             $rootpath = FileManageModel::getRootDir();
 
-             $fullname = $this->request->param('fullname');
 
-             $relativePath = $this->request->param('relative_path', '', 'replaceDS');
 
-             $fullpath = $rootpath . DS . $relativePath . DS . $fullname;
 
-             if (!file_exists($fullpath)) {
 
-                 $this->error('文件不存在');
 
-             }
 
-             if (is_dir($fullpath)) {
 
-                 DirHelper::delDir($fullpath);
 
-                 if (file_exists($fullpath)) {
 
-                     $this->error("删除失败,请检查目录权限");
 
-                 }
 
-                 $this->success('删除成功', 'index');
 
-             } else {
 
-                 if (false == unlink($fullpath)) {
 
-                     $this->error('删除失败');
 
-                 } else {
 
-                     $this->success('删除成功', 'index');
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     public function rename()
 
-     {
 
-         if ($this->request->isAjax()) {
 
-             $relativePath = $this->request->param('relative_path', '', 'replaceDS');
 
-             $oldname = $this->request->param('oldname');
 
-             $newname = $this->request->param('newname');
 
-             $rootpath = FileManageModel::getRootDir();
 
-             if (file_exists($rootpath . DS . $newname)) {
 
-                 $this->error('文件已存在');
 
-             }
 
-             if (FileHelper::rename($rootpath . DS . $relativePath . DS . $oldname, $rootpath . DS . $relativePath . DS . $newname)) {
 
-                 $this->success('重命名成功', 'index');
 
-             } else {
 
-                 $this->error('重命名失败');
 
-             }
 
-         }
 
-     }
 
-     public function upload()
 
-     {
 
-         //html目录
 
-         $rootpath = FileManageModel::getRootDir();
 
-         //相对路径
 
-         $relativePath = $this->request->param('relative_path', '', 'replaceDS');
 
-         (new UploadService())->upload2path(appendEndDS(appendEndDS($rootpath) . $relativePath));
 
-     }
 
-     public function createDir()
 
-     {
 
-         $name = $this->request->param('name');
 
-         //根目录
 
-         $rootpath = FileManageModel::getRootDir();
 
-         //根目录下的相对路径
 
-         $relativePath = $this->request->param('relative_path', '', 'replaceDS');
 
-         if (true === DirHelper::makeDir($rootpath . DS . $relativePath . DS . $name)) {
 
-             $this->success('执行成功');
 
-         } else {
 
-             $this->error('执行失败');
 
-         }
 
-     }
 
-     public function unzip()
 
-     {
 
-         $post = $this->request->param();
 
-         $file_list = $post['file_list'];
 
-         $relativePath = $this->request->param('relative_path', '', 'replaceDS');
 
-         $rootPath = FileManageModel::getRootDir();
 
-         try {
 
-             foreach ($file_list as $filename) {
 
-                 $source = $rootPath . DS . ($relativePath ? $relativePath . DS . $filename : $filename);
 
-                 $dest = $rootPath . DS . $relativePath;
 
-                 if (ifContain($source, '.zip')) {
 
-                     if (false === (new ZipHelper())->unzip_gbk($source, $dest)) {
 
-                         throw new \Exception('解压失败');
 
-                     }
 
-                 }
 
-             }
 
-         } catch (Exception $e) {
 
-             $this->error($e->getMessage());
 
-         }
 
-         $this->success('执行成功');
 
-     }
 
-     /**
 
-      * 上传到ftp ,要防止数据量过多
 
-      */
 
-     public function ftpCover()
 
-     {
 
-         $post = $this->request->param();
 
-         $file_list = $post['file_list'];
 
-         $relativePath = $this->request->param('relative_path', '', 'replaceDS');
 
-         //
 
-         $rootPath = FileManageModel::getRootDir();
 
-         $ftpHost = Env::get('article_ftp_host', '127.0.0.1');
 
-         $ftpPort = Env::get('article_ftp_port', 21);
 
-         $ftpUser = Env::get('article_ftp_user', 'username');
 
-         $ftpPwd = Env::get('article_ftp_pwd', 'password');
 
-         $ftpWebroot = Env::get('article_ftp_webroot', '');
 
-         if (empty($ftpHost)) {
 
-             $this->error('请先配置ftp');
 
-         }
 
-         try {
 
-             $ftp = new FtpHelper();
 
-             $ftp->connect($ftpHost, $ftpUser, $ftpPwd, $ftpPort);
 
-             //设置根目录
 
-             if ($ftpWebroot) {
 
-                 $ftp->cd($ftpWebroot);
 
-             }
 
-             foreach ($file_list as $filename) {
 
-                 $upDownPath = $rootPath . DS . ($relativePath ? $relativePath . DS . $filename : $filename);
 
-                 if (is_file($upDownPath)) {
 
-                     Log::log($upDownPath);
 
-                     $ftp->mkdir($relativePath);//新建远程目录
 
-                     $ftp->upload($relativePath . DS . $filename, $upDownPath);
 
-                 } else {
 
-                     $this->ftpUpload($upDownPath, $rootPath, $ftp);
 
-                 }
 
-             }
 
-         } catch (Exception $e) {
 
-             $this->error($e->getMessage());
 
-         }
 
-         $this->success('执行成功');
 
-     }
 
-     /**
 
-      * 递归上传ftp
 
-      * @param $dir [要上传的文件或目录的物理路径]
 
-      * @param $rootPath [本地根目录]
 
-      * @param $ftp FtpHelper
 
-      */
 
-     private function ftpUpload($dir, $rootPath, $ftp)
 
-     {
 
-         Log::log($dir);
 
-         if (file_exists($dir)) {
 
-             $ftpDir = replaceUrlDS(str_replace($rootPath, '', $dir));
 
-             if ($ftpDir) {
 
-                 $ftp->mkdir($ftpDir);//新建远程目录
 
-             }
 
-             $mydir = dir($dir);
 
-             while (false !== ($file = $mydir->read())) {
 
-                 if ($file != "." && $file != "..") {
 
-                     $path = $dir . DS . $file;
 
-                     if (is_dir($path)) {
 
-                         $this->ftpUpload($path, $rootPath, $ftp);
 
-                     } else {
 
- //                        if (time() - filemtime($path) <= 3600 * 24) {//修改时间是否超过24小时
 
-                         Log::log($path);
 
-                         $ftp->upload($ftpDir . DS . $file, $path);
 
- //                        }
 
-                     }
 
-                 }
 
-             }
 
-             $mydir->close();
 
-         }
 
-     }
 
- }
 
 
  |