savePath = I('GET.savepath','temp').'/'; $this->savePath1 = I('GET.savepath1',''); error_reporting(E_ERROR | E_WARNING); } public function index(){ $CONFIG2 = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents("./public/plugins/Ueditor/php/config.json")), true); $action = $_GET['action']; switch ($action) { case 'config': $result = json_encode($CONFIG2); break; /* 上传图片 */ case 'uploadimage': $fieldName = $CONFIG2['imageFieldName']; $result = $this->upFile($fieldName); break; /* 上传涂鸦 */ case 'uploadscrawl': $config = array( "pathFormat" => $CONFIG2['scrawlPathFormat'], "maxSize" => $CONFIG2['scrawlMaxSize'], "allowFiles" => $CONFIG2['scrawlAllowFiles'], "oriName" => "scrawl.png" ); $fieldName = $CONFIG2['scrawlFieldName']; $base64 = "base64"; $result = $this->upBase64($config,$fieldName); break; /* 上传视频 */ case 'uploadvideo': $fieldName = $CONFIG2['videoFieldName']; $result = $this->upFile($fieldName); break; /* 上传文件 */ case 'uploadfile': $fieldName = $CONFIG2['fileFieldName']; $result = $this->upFile($fieldName); break; /* 列出图片 */ case 'listimage': $allowFiles = $CONFIG2['imageManagerAllowFiles']; $listSize = $CONFIG2['imageManagerListSize']; $path = $CONFIG2['imageManagerListPath']; $get =$_GET; $result =$this->fileList($allowFiles,$listSize,$get); break; /* 列出文件 */ case 'listfile': $allowFiles = $CONFIG2['fileManagerAllowFiles']; $listSize = $CONFIG2['fileManagerListSize']; $path = $CONFIG2['fileManagerListPath']; $get = $_GET; $result = $this->fileList($allowFiles,$listSize,$get); break; /* 抓取远程文件 */ case 'catchimage': $config = array( "pathFormat" => $CONFIG2['catcherPathFormat'], "maxSize" => $CONFIG2['catcherMaxSize'], "allowFiles" => $CONFIG2['catcherAllowFiles'], "oriName" => "remote.png" ); $fieldName = $CONFIG2['catcherFieldName']; /* 抓取远程图片 */ $list = array(); isset($_POST[$fieldName]) ? $source = $_POST[$fieldName] : $source = $_GET[$fieldName]; foreach($source as $imgUrl){ $info = json_decode($this->saveRemote($config,$imgUrl),true); array_push($list, array( "state" => $info["state"], "url" => $info["url"], "size" => $info["size"], "title" => htmlspecialchars($info["title"]), "original" => htmlspecialchars($info["original"]), "source" => htmlspecialchars($imgUrl) )); } $result = json_encode(array( 'state' => count($list) ? 'SUCCESS':'ERROR', 'list' => $list )); break; default: $result = json_encode(array( 'state' => '请求地址出错' )); break; } /* 输出结果 */ if(isset($_GET["callback"])){ if(preg_match("/^[\w_]+$/", $_GET["callback"])){ echo htmlspecialchars($_GET["callback"]).'('.$result.')'; }else{ echo json_encode(array( 'state' => 'callback参数不合法' )); } }else{ echo $result; } } public function getContent() { echo ' "; $myEditor = $this->request->param('myEditor'); $content = htmlspecialchars(stripslashes($myEditor)); echo "
" . htmlspecialchars_decode($content) . "
"; } /*** public function fileUp() { $config = array( "savePath" => 'File/', "maxSize" => 20000000, // 单位B "exts" => explode(",", 'zip,rar,doc,docx,zip,pdf,txt,ppt,pptx,xls,xlsx'), "subName" => $this->sub_name, ); $upload = new Upload($config); $info = $upload->upload(); if ($info) { $state = "SUCCESS"; } else { $state = "ERROR" . $upload->getError(); } $return_data['url'] = $info['upfile']['urlpath']; $return_data['fileType'] = $info['upfile']['ext']; $return_data['original'] = $info['upfile']['name']; $return_data['state'] = $state; $this->ajaxReturn($return_data,'JSON'); }***/ //上传文件 private function upFile($fieldName){ $file = request()->file('file'); if(empty($file)){ $file = request()->file('upfile'); } $result = true; if (true !== $result || empty($file)) { $state = "ERROR" . $result; return json_encode(['state' =>$state]); }else{ // 移动到框架应用根目录/public/uploads/ 目录下 $this->savePath = $this->savePath.date('Y').'/'.date('m-d').'/'; // 使用自定义的文件保存规则 $info = $file->rule(function ($file) { return md5(mt_rand()); })->move('public/upload/'.$this->savePath); //保存到存储云 vendor('qcloudcos.myqcloudcos'); $resfolder=Myqcloudcos::statFolder('wxd',UPLOAD_PATH. $this->savePath); if ($resfolder && $resfolder['code']!=0)//不存在创建 { Myqcloudcos::createFolder('wxd',UPLOAD_PATH. $this->savePath); } //上传到腾讯云 $localpath=ROOT_PATH.'/public/upload/'.$this->savePath.$info->getSaveName(); $ypath='/'.UPLOAD_PATH.$this->savePath.$info->getSaveName(); $res=Myqcloudcos::upload('wxd',$localpath,$ypath); if($res && $res['code']==0){ } } if($info){ $data = array( 'state' => 'SUCCESS', 'url' => QCLOUD_IMGURL.'/public/upload/'.$this->savePath.$info->getSaveName(), 'title' => $info->getFilename(), 'original' => $info->getFilename(), 'type' => '.' . $info->getExtension(), 'size' => $info->getSize(), ); }else{ $data = array('state' => 'ERROR'.$file->getError()); } return json_encode($data); } /** * 获取远程图片 */ public function getRemoteImage() { header("Content-Type: text/html; charset=utf-8"); //远程抓取图片配置 $config = array( "savePath" => UPLOAD_PATH . 'remote/' . date('Y') . '/' . date('m') . '/', //保存路径 "allowFiles" => array(".gif", ".png", ".jpg", ".jpeg", ".bmp"), //文件允许格式 "maxSize" => 20000000, ); $upfile = $this->request->param('upfile'); $uri = htmlspecialchars($upfile); $uri = str_replace("&", "&", $uri); $this->getRemoteImage2($uri, $config); } //抓取远程图片 private function saveRemote($config,$fieldName){ $imgUrl = htmlspecialchars($fieldName); $imgUrl = str_replace("&","&",$imgUrl); //http开头验证 if(strpos($imgUrl,"http") !== 0){ $data=array( 'state' => '链接不是http链接', ); return json_encode($data); } //获取请求头并检测死链 $heads = get_headers($imgUrl); if(!(stristr($heads[0],"200") && stristr($heads[0],"OK"))){ $data=array( 'state' => '链接不可用', ); return json_encode($data); } //格式验证(扩展名验证和Content-Type验证) $fileType = strtolower(strrchr($imgUrl,'.')); if(!in_array($fileType,$config['allowFiles']) || stristr($heads['Content-Type'],"image")){ $data=array( 'state' => '链接contentType不正确', ); return json_encode($data); } //打开输出缓冲区并获取远程图片 ob_start(); $context = stream_context_create( array('http' => array( 'follow_location' => false // don't follow redirects )) ); readfile($imgUrl,false,$context); $img = ob_get_contents(); ob_end_clean(); preg_match("/[\/]([^\/]*)[\.]?[^\.\/]*$/",$imgUrl,$m); $dirname = './public/upload/remote/'; $file['oriName'] = $m ? $m[1] : ""; $file['filesize'] = strlen($img); $file['ext'] = strtolower(strrchr($config['oriName'],'.')); $file['name'] = uniqid().$file['ext']; $file['fullName'] = $dirname.$file['name']; $fullName = $file['fullName']; $fname='/public/upload/remote/'.$file['name']; //检查文件大小是否超出限制 if($file['filesize'] >= ($config["maxSize"])){ $data=array( 'state' => '文件大小超出网站限制', ); return json_encode($data); } //创建目录失败 if(!file_exists($dirname) && !mkdir($dirname,0777,true)){ $data=array( 'state' => '目录创建失败', ); return json_encode($data); }else if(!is_writeable($dirname)){ $data=array( 'state' => '目录没有写权限', ); return json_encode($data); } //移动文件 if(!(file_put_contents($fullName, $img) && file_exists($fullName))){ //移动失败 $data=array( 'state' => '写入文件内容错误', ); return json_encode($data); }else{ //保存到存储云 vendor('qcloudcos.myqcloudcos'); $resfolder=Myqcloudcos::statFolder('wxd',UPLOAD_PATH. $this->savePath); if ($resfolder && $resfolder['code']!=0)//不存在创建 { Myqcloudcos::createFolder('wxd',UPLOAD_PATH. $this->savePath); } //上传到腾讯云 $localpath=ROOT_PATH.$fname; $ypath='/'.UPLOAD_PATH.$fname; $res=Myqcloudcos::upload('wxd',$localpath,$ypath); //移动成功 $data=array( 'state' => 'SUCCESS', 'url' => "https://mshopimg.yolipai.net".$fname, 'title' => $file['name'], 'original' => $file['oriName'], 'type' => $file['ext'], 'size' => $file['filesize'], ); } return json_encode($data); } /** * 远程抓取 * @param $uri * @param $config */ public function getRemoteImage2($uri, $config) { //忽略抓取时间限制 set_time_limit(0); //ue_separate_ue ue用于传递数据分割符号 $imgUrls = explode("ue_separate_ue", $uri); $tmpNames = array(); foreach ($imgUrls as $imgUrl) { //http开头验证 if (strpos($imgUrl, "http") !== 0) { array_push($tmpNames, "https error"); continue; } //sae环境 不兼容 if (!defined('SAE_TMP_PATH')) { //获取请求头 $heads = get_headers($imgUrl); //死链检测 if (!(stristr($heads[0], "200") && stristr($heads[0], "OK"))) { array_push($tmpNames, "get_headers error"); continue; } } //格式验证(扩展名验证和Content-Type验证) $fileType = strtolower(strrchr($imgUrl, '.')); if (!in_array($fileType, $config['allowFiles']) || stristr($heads['Content-Type'], "image")) { array_push($tmpNames, "Content-Type error"); continue; } //打开输出缓冲区并获取远程图片 ob_start(); $context = stream_context_create( array( 'http' => array( 'follow_location' => false // don't follow redirects ) ) ); //请确保php.ini中的fopen wrappers已经激活 readfile($imgUrl, false, $context); $img = ob_get_contents(); ob_end_clean(); //大小验证 $uriSize = strlen($img); //得到图片大小 $allowSize = 1024 * $config['maxSize']; if ($uriSize > $allowSize) { array_push($tmpNames, "maxSize error"); continue; } $savePath = $config['savePath']; if (!defined('SAE_TMP_PATH')) { //非SAE //创建保存位置 if (!file_exists($savePath)) { mkdir($savePath, 0777, true); } //写入文件 $tmpName = $savePath . rand(1, 10000) . time() . strrchr($imgUrl, '.'); try { File::writeFile($tmpName, $img, "a"); array_push($tmpNames, '/' . $tmpName); } catch (\Exception $e) { array_push($tmpNames, "error"); } } else { //SAE $Storage = new \SaeStorage(); $domain = C('SaeStorage'); $destFileName = 'remote/' . date('Y') . '/' . date('m') . '/' . rand(1, 10000) . time() . strrchr($imgUrl, '.'); $result = $Storage->write($domain, $destFileName, $img, -1); Log::write('$destFileName:' . $destFileName); if ($result) { array_push($tmpNames, $result); } else { array_push($tmpNames, "not supported"); } } } /** * 返回数据格式 * { * 'url' : '新地址一ue_separate_ue新地址二ue_separate_ue新地址三', * 'srcUrl': '原始地址一ue_separate_ue原始地址二ue_separate_ue原始地址三', * 'tip' : '状态提示' * } */ $return_data['url'] = implode("ue_separate_ue", $tmpNames); $return_data['tip'] = '远程图片抓取成功!'; $return_data['srcUrl'] = $uri; $this->ajaxReturn($return_data); } /** * 无需移植 * @function getMovie */ public function getMovie() { $key = C("tudouSearchKey"); $type = I('post.videoType'); $html = file_get_contents('http://api.tudou.com/v3/gw?method=item.search&appKey=myKey&format=json&kw=' . $key . '&pageNo=1&pageSize=20&channelId=' . $type . '&inDays=7&media=v&sort=s'); echo $html; } /** * @function imageManager */ public function imageManager() { header("Content-Type: text/html; charset=utf-8"); //需要遍历的目录列表,最好使用缩略图地址,否则当网速慢时可能会造成严重的延时 $paths = array(UPLOAD_PATH.$this->savePath."/".$this->savePath1."/"); $action = $this->request->param('action'); $action = htmlspecialchars($action); if ($action == "get") { if (!defined('SAE_TMP_PATH')) { $files = array(); include_once 'application/common/util/File.class.php'; foreach ($paths as $path) { $tmp = File::getFiles($path); if ($tmp) { $files = array_merge($files, $tmp); } } if (!count($files)) return; rsort($files, SORT_STRING); $str = ""; foreach ($files as $file) { $str .= '/' . $file . "ue_separate_ue"; } echo $str; } else { // SAE环境下 $st = new \SaeStorage(); // 实例化 /* * getList:获取指定domain下的文件名列表 * return: 执行成功时返回文件列表数组,否则返回false * 参数:存储域,路径前缀,返回条数,起始条数 */ $num = 0; while ($ret = $st->getList(C('SaeStorage'), null, 100, $num)) { foreach ($ret as $file) { if (preg_match("/\.(gif|jpeg|jpg|png|bmp)$/i", $file)) echo $st->getUrl('upload', $file) . "ue_separate_ue"; $num++; } } } } } /* * 处理base64编码的图片上传 * 例如:涂鸦图片上传 */ private function upBase64($config,$fieldName){ $base64Data = $_POST[$fieldName]; $img = base64_decode($base64Data); $dirname = './public/upload/scrawl/'; $file['filesize'] = strlen($img); $file['oriName'] = $config['oriName']; $file['ext'] = strtolower(strrchr($config['oriName'],'.')); $file['name'] = uniqid().$file['ext']; $file['fullName'] = $dirname.$file['name']; $fullName = $file['fullName']; //检查文件大小是否超出限制 if($file['filesize'] >= ($config["maxSize"])){ $data=array( 'state' => '文件大小超出网站限制', ); return json_encode($data); } //创建目录失败 if(!file_exists($dirname) && !mkdir($dirname,0777,true)){ $data=array( 'state' => '目录创建失败', ); return json_encode($data); }else if(!is_writeable($dirname)){ $data=array( 'state' => '目录没有写权限', ); return json_encode($data); } //移动文件 if(!(file_put_contents($fullName, $img) && file_exists($fullName))){ //移动失败 $data=array( 'state' => '写入文件内容错误', ); }else{ //保存到存储云 vendor('qcloudcos.myqcloudcos'); $resfolder=Myqcloudcos::statFolder('wxd',UPLOAD_PATH. $this->savePath); if ($resfolder && $resfolder['code']!=0)//不存在创建 { Myqcloudcos::createFolder('wxd',UPLOAD_PATH. $this->savePath); } //上传到腾讯云 $localpath=ROOT_PATH.$fname; $ypath='/'.UPLOAD_PATH.$fname; $res=Myqcloudcos::upload('wxd',$localpath,$ypath); //移动成功 $data=array( 'state' => 'SUCCESS', 'url' => "https://mshopimg.yolipai.net".substr($file['fullName'],1), 'title' => $file['name'], 'original' => $file['oriName'], 'type' => $file['ext'], 'size' => $file['filesize'], ); } return json_encode($data); } /** * @function imageUp */ public function imageUp() { // 上传图片框中的描述表单名称, $pictitle = I('pictitle'); $dir = I('dir'); $title = htmlspecialchars($pictitle , ENT_QUOTES); $path = htmlspecialchars($dir, ENT_QUOTES); $tablename=I('tablename'); $indexid=I('indexid'); $imgname=I('imgname'); $curid=I('curid'); $saveFileName=""; $addoldimg=I('addoldimg'); //$input_file ['upfile'] = $info['Filedata']; 一个是上传插件里面来的, 另外一个是文章编辑器里面来的 // 获取表单上传文件 $file = request()->file('Filedata'); if(empty($file)) $file = request()->file('file'); //图库-新 if(empty($file)) $file = request()->file('upfile'); $result = $this->validate( ['file2' => $file], ['file2'=>'image','file2'=>'fileSize:2000000'], ['file2.image' => '上传文件必须为图片','file2.fileSize' => '上传文件过大'] ); if(true !== $result){ $state = "ERROR" . $result; }else { // 移动到框架应用根目录/public/uploads/ 目录下 if (empty($this->savePath1)) $this->savePath = $this->savePath . date('Y') . '/' . date('m-d') . '/'; else $this->savePath = $this->savePath . $this->savePath1 . '/' . date('Y') . '/' . date('m-d') . '/'; $info = $file->rule(function ($file) { $saveFileName = md5(mt_rand()); return $saveFileName; // 使用自定义的文件保存规则 })->move('public/upload/' . $this->savePath); if ($info) { $saveFileName = $this->savePath . $info->getSaveName(); $upfilepath = ROOT_PATH . "public/upload/" . $saveFileName; } else { } // if ($tablename == "marketing" || I('savepath') == "Marketing") //上传到有礼派资源图片上传(调用接口) { $saveFileName = $this->savePath . $info->getSaveName(); $upfilepath = ROOT_PATH . "/public/upload/" . $saveFileName; $img_data = [ 'img' => $upfilepath, 'imgname' => basename($saveFileName), ]; $post_data = image_form_data_splice($img_data['img'], $img_data['imgname']); if (!empty($post_data)) { $post_data .= FORM_HYPHENS . FORM_BOUNDARY . FORM_HYPHENS; } $req_headers = [ 'Content-Type: multipart/form-data; boundary=' . FORM_BOUNDARY, ]; $ylpres = httpRequest(YLPZY_URL . "/accounts/imgs", 'POST', $post_data, $req_headers); $data1 = json_decode($ylpres, true); mlog($ylpres, "imageUp"); if ($data1['code'] == 0) { $state = "SUCCESS"; $return_data['url'] = $data1['data']['download_url']; } else { $return_data['url'] = ""; $state = "ERROR"; } } else if ($tablename == "store_wxcard") { $saveFileName = $this->savePath . $info->getSaveName(); $upfilepath = ROOT_PATH . "/public/upload/" . $saveFileName; $size = getimagesize($upfilepath); $filetype = explode('/', $size['mime']); if (class_exists('\CURLFile')) { $data['buffer'] = new \CURLFile($upfilepath, $size['mime'], basename($saveFileName)); } else { $data = array( 'buffer' => '@' . realpath($saveFileName) . ";type=" . $filetype[1] . ";filename=" . basename($saveFileName) ); } $access_token = m_get_access_token(null,getAdmStoId()); $url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?type=image&access_token=".$access_token; $wxres=wx_https_request($url ,'post', 'json',$data); mlog(json_encode($wxres),"wxcard/".getAdmStoId()); if ($wxres['url']) { $state = "SUCCESS"; $return_data['url'] =$wxres['url']; } else{ $return_data['url'] = ""; $state = "ERROR"; } } else { //保存到存储云 vendor ('qcloudcos.myqcloudcos'); $resfolder=Myqcloudcos::statFolder('wxd',UPLOAD_PATH. $this->savePath); if ($resfolder && $resfolder['code']!=0)//不存在创建 { Myqcloudcos::createFolder('wxd',UPLOAD_PATH. $this->savePath); } //查询表取旧图,删除旧图 if ($curid != "0" && !empty($curid) ) { $searchtable = D($tablename)->where($indexid,$curid)->find(); $oldimg=$searchtable[$imgname]; $soldimg=dirname($oldimg)."/s_".basename($oldimg); if (!empty($oldimg)) { mdelFile(ROOT_PATH . $oldimg); mdelFile(ROOT_PATH . $soldimg); if ($tablename!= "goods" && $tablename != "goods_images") { //腾讯云 $delres=Myqcloudcos::delFile('wxd',$oldimg); $delres=Myqcloudcos::delFile('wxd',$soldimg); } } $data[$imgname]='/public/upload/'.$this->savePath.$info->getSaveName(); if($indexid!='store_id') $data['store_id']=getAdmStoId(); if ($tablename!="goods")//商品的时候 更新相册 { $r = M($tablename)->where($indexid,$curid)->save($data); //$goodimgdata['image_url']='/public/upload/'.$this->savePath.$info->getSaveName(); //D('goods_images')->where(array('goods_id'=>$curid,'ismain'=>1))->save($goodimgdata); } } else { if (!empty($addoldimg)) { $addoldimg=urldecode($addoldimg); $saddoldimg=dirname($addoldimg)."/s_".basename($addoldimg); mdelFile(ROOT_PATH . $addoldimg); mdelFile(ROOT_PATH . $saddoldimg); if ($tablename!= "goods" && $tablename != "goods_images") { //腾讯云 $delres=Myqcloudcos::delFile('wxd',$addoldimg); $delres=Myqcloudcos::delFile('wxd',$saddoldimg); } } } //echo print_r($info,true); if ($info) $state = "SUCCESS"; else $state = "ERROR" . $file->getError(); $saveFileName=$this->savePath.$info->getSaveName(); m_cut_img(basename($saveFileName),ROOT_PATH.'/public/upload/'.dirname($saveFileName).'/'); //商品图片才加水印 if ($tablename=="goods" || $tablename=="goods_images") { //图片水印处理 $water = tpCache('water', getAdmStoId()); $original_img = "./public/upload/" . $saveFileName; $image = \think\Image::open($original_img); if ($water['is_mark'] == 1) { if ($water['mark_type'] == 'img' && !empty($water['mark_img'])) { try { $img = file_get_contents('https://mshopimg.yolipai.net'.$water['mark_img']); $ext = strrchr($water['mark_img'],'.'); $pt='/public/upload/logo/' . date('Y') . '/' . date('m-d') . '/'; if (!is_dir(ROOT_PATH.$pt)) mkdir(ROOT_PATH.$pt,0777,true); $f10=$pt.time().mt_rand().".".$ext; file_put_contents(ROOT_PATH.$f10,$img); if(file_exists(ROOT_PATH.$f10)) { $image->open($original_img)->water("." . $f10, $water['mark_position'], $water['mark_degree'])->save($original_img); } mdelFile(ROOT_PATH.$f10); } catch (Exception $e) { return NOIMG; } } else { //检查字体文件是否存在 if (file_exists('./SIMYOU.TTF')) { $image->open($original_img)->text($water['mark_text'], './SIMYOU.TTF', 20, '#000000', $water['mark_position'])->save($original_img); } } } //商品表的主表生成小图 if($tablename=="goods" || $tablename=="goods_images") { //生成小图 m_cut_img(basename($saveFileName), ROOT_PATH . '/public/upload/' . dirname($saveFileName) . '/', 400, 1); $slocalpath=ROOT_PATH.'/'.UPLOAD_PATH.dirname($saveFileName).'/s_'.basename($saveFileName); $sypath='/'.UPLOAD_PATH.dirname($saveFileName).'/s_'.basename($saveFileName); $res=Myqcloudcos::upload('wxd',$slocalpath,$sypath); } } //上传到腾讯云 $localpath=ROOT_PATH.'/'.UPLOAD_PATH.dirname($saveFileName).'/'.basename($saveFileName); $ypath='/'.UPLOAD_PATH.dirname($saveFileName).'/'.basename($saveFileName); $res=Myqcloudcos::upload('wxd',$localpath,$ypath); mlog("上传失败的错误:".json_encode($res),"imageUp/".getAdmStoId()); if ($res && $res['code']==0)//成功 { //mdelFile($localpath); $return_data['url'] = '/public/upload/'.$this->savePath.$info->getSaveName(); }else{ $state = "ERROR" . "云上传失败"; } } } $return_data['title'] = $title; $return_data['original'] = ''; // 这里好像没啥用 暂时注释起来 $return_data['state'] = $state; $return_data['path'] = $path; //print_r($return_data); $this->ajaxReturn($return_data,'json'); } /** * @function imageUp1 */ public function imageUp1() { // 上传图片框中的描述表单名称, $pictitle = I('pictitle'); $dir = I('dir'); $title = htmlspecialchars($pictitle , ENT_QUOTES); $path = htmlspecialchars($dir, ENT_QUOTES); $localpath1=I('savepath'); $tablename=I('tablename'); $store_id=getAdmStoId(); if(!empty($_SESSION['manager_id']) && $tablename=='manager') { $manager=D('manager_admin')->where('manager_id',$_SESSION['manager_id'])->find(); if($manager) { $store_id=0; } } // $indexid=I('indexid'); // $imgname=I('imgname'); // $curid=I('curid'); $saveFileName=""; // $addoldimg=I('addoldimg'); $groupid=I('groupid'); //$input_file ['upfile'] = $info['Filedata']; 一个是上传插件里面来的, 另外一个是文章编辑器里面来的 // 获取表单上传文件 $file = request()->file('Filedata'); if(empty($file)) $file = request()->file('file'); //图库-新 if(empty($file)) $file = request()->file('upfile'); $result = $this->validate( ['file2' => $file], ['file2'=>'image','file2'=>'fileSize:2000000'], ['file2.image' => '上传文件必须为图片','file2.fileSize' => '上传文件过大'] ); if(true !== $result){ $state = "ERROR" . $result; }else { // 移动到框架应用根目录/public/uploads/ 目录下 if (empty($this->savePath1)) $this->savePath = $this->savePath . date('Y') . '/' . date('m-d') . '/'; else $this->savePath = $this->savePath . $this->savePath1 . '/' . date('Y') . '/' . date('m-d') . '/'; $info = $file->rule(function ($file) { $saveFileName = md5(mt_rand());//$_FILES['info']['name']; return $saveFileName; // 使用自定义的文件保存规则 })->move('public/upload/' . $this->savePath); if ($info) { $saveFileName = $this->savePath . $info->getSaveName(); $upfilepath = ROOT_PATH . "public/upload/" . $saveFileName; } else { } if(!empty($_FILES['file']['name'])) { $file_ext=pathinfo(basename($_FILES['file']['name']))['filename'];//图片原名 } // if ($tablename == "marketing" || I('savepath') == "Marketing") //上传到有礼派资源图片上传(调用接口) { if (I('savepath') == "Marketing")//编辑器接口 { $saveFileName = $this->savePath . $info->getSaveName(); $upfilepath = ROOT_PATH . "/public/upload/" . $saveFileName; $img_data = [ 'img' => $upfilepath, 'imgname' => basename($saveFileName), ]; $post_data = image_form_data_splice($img_data['img'], $img_data['imgname']); if (!empty($post_data)) { $post_data .= FORM_HYPHENS . FORM_BOUNDARY . FORM_HYPHENS; } $req_headers = [ 'Content-Type: multipart/form-data; boundary=' . FORM_BOUNDARY, ]; $ylpres = httpRequest(YLPZY_URL . "/accounts/imgs", 'POST', $post_data, $req_headers); $data1 = json_decode($ylpres, true); mlog($ylpres, "imageUp"); if ($data1['code'] == 0) { $state = "SUCCESS"; $return_data['url'] = $data1['data']['download_url']."|"."/public/upload/" . $saveFileName; } else { $return_data['url'] = ""; $state = "ERROR"; } } else { $state = "SUCCESS"; $return_data['url'] = "/public/upload/" . $saveFileName; } } else { //保存到存储云 vendor ('qcloudcos.myqcloudcos'); $resfolder=Myqcloudcos::statFolder('wxd',UPLOAD_PATH. $this->savePath); if ($resfolder && $resfolder['code']!=0)//不存在创建 { Myqcloudcos::createFolder('wxd',UPLOAD_PATH. $this->savePath); } //查询表取旧图,删除旧图(07.08.12 注释) // if ($curid != "0" && !empty($curid) ) { // $searchtable = D($tablename)->where($indexid,$curid)->find(); // $oldimg=$searchtable[$imgname]; // $soldimg=dirname($oldimg)."/s_".basename($oldimg); // if (!empty($oldimg)) { // mdelFile(ROOT_PATH . $oldimg); // mdelFile(ROOT_PATH . $soldimg); // //腾讯云 // $delres=Myqcloudcos::delFile('wxd',$oldimg); // $delres=Myqcloudcos::delFile('wxd',$soldimg); // } // $data[$imgname]='/public/upload/'.$this->savePath.$info->getSaveName(); // $data['store_id']=getAdmStoId(); // $r = D($tablename)->where($indexid,$curid)->save($data); // if ($tablename=="goods")//商品的时候 更新相册 // { // $goodimgdata['image_url']='/public/upload/'.$this->savePath.$info->getSaveName(); // D('goods_images')->where(array('goods_id'=>$curid,'ismain'=>1))->save($goodimgdata); // // } // } // else { // // if (!empty($addoldimg)) { // $addoldimg=urldecode($addoldimg); // $saddoldimg=dirname($addoldimg)."/s_".basename($addoldimg); // mdelFile(ROOT_PATH . $addoldimg); // mdelFile(ROOT_PATH . $saddoldimg); // //腾讯云 // $delres=Myqcloudcos::delFile('wxd',$addoldimg); // $delres=Myqcloudcos::delFile('wxd',$saddoldimg); // // } // } //echo print_r($info,true); if ($info) $state = "SUCCESS"; else $state = "ERROR" . $file->getError(); $saveFileName=$this->savePath.$info->getSaveName(); m_cut_img(basename($saveFileName),ROOT_PATH.'/public/upload/'.dirname($saveFileName).'/'); //商品图片才加水印 if ($tablename=="goods" || $tablename=="goods_images") { //图片水印处理 $water = tpCache('water', $store_id); $original_img = "./public/upload/" . $saveFileName; $image = \think\Image::open($original_img); if ($water['is_mark'] == 1) { if ($water['mark_type'] == 'img' && !empty($water['mark_img'])) { try { $img = file_get_contents('https://mshopimg.yolipai.net'.$water['mark_img']); $ext = strrchr($water['mark_img'],'.'); $pt='/public/upload/logo/' . date('Y') . '/' . date('m-d') . '/'; if (!is_dir(ROOT_PATH.$pt)) mkdir(ROOT_PATH.$pt,0777); $f10=$pt.time().mt_rand().".".$ext; file_put_contents(ROOT_PATH.$f10,$img); if(file_exists(ROOT_PATH.$f10)) { $image->open($original_img)->water("." . $water['mark_img'], $water['mark_position'], $water['mark_degree'])->save($original_img); } mdelFile(ROOT_PATH.$f10); } catch (Exception $e) { return NOIMG; } } else { //检查字体文件是否存在 if (file_exists('./SIMYOU.TTF')) { $image->open($original_img)->text($water['mark_text'], './SIMYOU.TTF', 20, '#000000', $water['mark_position'])->save($original_img); } } } //商品表的主表生成小图 if($tablename=="goods") { //生成小图 m_cut_img(basename($saveFileName), ROOT_PATH . '/public/upload/' . dirname($saveFileName) . '/', 400, 1); $slocalpath=ROOT_PATH.'/'.UPLOAD_PATH.dirname($saveFileName).'/s_'.basename($saveFileName); $sypath='/'.UPLOAD_PATH.dirname($saveFileName).'/s_'.basename($saveFileName); $res=Myqcloudcos::upload('wxd',$slocalpath,$sypath); } } //上传到腾讯云 $localpath=ROOT_PATH.'/'.UPLOAD_PATH.dirname($saveFileName).'/'.basename($saveFileName); $ypath='/'.UPLOAD_PATH.dirname($saveFileName).'/'.basename($saveFileName); $res=Myqcloudcos::upload('wxd',$localpath,$ypath); mlog(json_encode($res),"imageUp"); if ($res && $res['code']==0)//成功 { //mdelFile($localpath); } $return_data['url'] = '/public/upload/'.$this->savePath.$info->getSaveName(); } } //存入图片库-数据库 $filename=$filename1=$return_data['url']; $filename= str_replace('../','',$filename); $filename= trim($filename,'.'); $filename= trim($filename,'/'); if(file_exists(ROOT_PATH.$filename)) { $size = getimagesize($filename); $filetype = explode('/', $size['mime']); if ($filetype[0] != 'image') { return false; exit; } $filesize = filesize($filename); $sfilename = "s_" . basename($filename); $sdir = dirname($filename); $newsfilename = $sdir . "/" . $sfilename; if ($tablename != "goods") { $file_info = array('filename' => $filename1, //国片相对于网站根目录的路径 'content-type' => $filetype[1], //文件类型 'filelength' => $filesize //图文大小 ); $wechat = D('wx_user')->where('store_id', $store_id)->find(); if ($store_id==0 || $wechat) { // $jssdk = new \app\mobile\logic\Jssdk($wechat['appid'], $wechat['appsecret']); // $access_token = $jssdk->get_access_token($wechat['appid'], $wechat['appsecret']); // $url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={$access_token}&type=image"; // // $real_path = "{$_SERVER['DOCUMENT_ROOT']}{$file_info['filename']}"; // // $data = array("media" => "@{$real_path}", 'form-data' => $file_info); // // if (class_exists('\CURLFile')) { // $data['media'] = new \CURLFile($real_path, $size['mime'], basename($filename1)); // } else { // $data = array( // 'media' => '@' . realpath($filename) . ";type=" . $filetype[1] . ";filename=" . basename($filename1) // ); // } // //上传至公众号 // $wxres ='';//wx_https_request($url, 'post', 'json', $data); // // // if ($wxres['media_id']) { // // $savedate['media_id'] = $wxres['media_id']; // $savedate['url'] = $wxres['url']; // // // $info = array( // 'status' => 1, // 'media_id' => $wxres['media_id'], // 'msg' => 0, // ); // // } $savedate['store_id'] = $store_id; $savedate['imgname'] = $file_ext;//basename($filename); $savedate['img'] = $filename1; $savedate['localpath'] = $localpath1; $savedate['wid'] = $size[0]; $savedate['hei'] = $size[1]; $savedate['groupid']=$groupid; $savedate['addtime'] = time(); $saveid=D('store_wximglist')->insertGetId($savedate); //mdelFile($filename);//删除本地图片 $return_data['id']=$saveid; $return_data['imgname']=$file_ext; } } } //basename($filename); $return_data['title'] = $title; $return_data['original'] = ''; // 这里好像没啥用 暂时注释起来 $return_data['state'] = $state; $return_data['path'] = $path; //var_dump($return_data); mlog(json_encode($return_data),"newimg"); $this->ajaxReturn($return_data,'json'); } /*--删除文件--*/ public function delfile(){ $f=I('file'); mdelFile($f); echo "1"; exit(); } /*---获取腾讯云服务器的域名---*/ public function gethosturl(){ return QCLOUD_IMGURL; } public function audio(){ $file = request()->file('tupfile'); $data['size']=round($file->getSize()/1024,2); $data['name']=$file->getFilename(); // 移动到框架应用根目录/public/uploads/ 目录下 $this->savePath = $this->savePath. "/".$this->savePath1."/"; // 使用自定义的文件保存规则 $info = $file->rule(function ($file) { return md5(mt_rand()); }) ->move('public/upload/'.$this->savePath); //保存到存储云 vendor('qcloudcos.myqcloudcos'); $resfolder=Myqcloudcos::statFolder('wxd',UPLOAD_PATH. $this->savePath); if ($resfolder && $resfolder['code']!=0)//不存在创建 { Myqcloudcos::createFolder('wxd',UPLOAD_PATH. $this->savePath); } //上传到腾讯云 $localpath=ROOT_PATH.'/public/upload/'.$this->savePath.$info->getSaveName(); $ypath='/'.UPLOAD_PATH.$this->savePath.$info->getSaveName(); $res=Myqcloudcos::upload('wxd',$localpath,$ypath); if($res && $res['code']==0){} $data['url']="/public/upload/".$this->savePath.$info->getSaveName(); $data['store_id']=$this->savePath1; $data['add_time']=time(); M("audio")->save($data); //移动成功 $data=array( 'state' => 'SUCCESS', 'url' => "https://mshopimg.yolipai.net/public/upload/".$this->savePath.$info->getSaveName(), 'title' =>$info->getSaveName(), 'type' => $file->getExtension(), 'path'=>"/public/upload/".$this->savePath.$info->getSaveName(), ); return json($data); } }