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);
}
}