258 lines
8.6 KiB
PHP
258 lines
8.6 KiB
PHP
<?php
|
||
/**
|
||
* tpshop
|
||
* ============================================================================
|
||
* 版权所有 2015-2027 深圳搜豹网络科技有限公司,并保留所有权利。
|
||
* 网站地址: http://www.tp-shop.cn
|
||
* ----------------------------------------------------------------------------
|
||
* 商业用途务必到官方购买正版授权, 使用盗版将严厉追究您的法律责任。
|
||
* ============================================================================
|
||
* Author: 当燃
|
||
* Date: 2015-09-22
|
||
*/
|
||
|
||
namespace app\admin\controller;
|
||
|
||
class Uploadify extends Base{
|
||
|
||
public function upload(){
|
||
$func = I('func');
|
||
$path = I('path','temp');
|
||
$image_upload_limit_size = config('image_upload_limit_size');
|
||
$fileType = I('fileType','Images'); //上传文件类型,视频,图片
|
||
if($fileType == 'Flash'){
|
||
$upload = U('Admin/Ueditor/videoUp',array('savepath'=>$path,'pictitle'=>'banner','dir'=>'video'));
|
||
$type = 'mp4,3gp,flv,avi,wmv';
|
||
}else{
|
||
$upload = U('Admin/Ueditor/imageUp',array('savepath'=>$path,'pictitle'=>'banner','dir'=>'images'));
|
||
$type = 'jpg,png,gif,jpeg';
|
||
}
|
||
$info = array(
|
||
'num'=> I('num/d'),
|
||
'fileType'=> $fileType,
|
||
'title' => '',
|
||
'upload' =>$upload,
|
||
'fileList'=>U('Admin/Uploadify/fileList',array('path'=>$path)),
|
||
'size' => $image_upload_limit_size/(1024 * 1024).'M',
|
||
'type' =>$type,
|
||
'input' => I('input'),
|
||
'func' => empty($func) ? 'undefined' : $func,
|
||
);
|
||
$this->assign('info',$info);
|
||
return $this->fetch();
|
||
}
|
||
|
||
//自定义海报专用上传图片
|
||
public function poster_upload(){
|
||
$func = I('func');
|
||
$path = I('path','temp');
|
||
$image_upload_limit_size = config('image_upload_limit_size');
|
||
$fileType = I('fileType','Images'); //上传文件类型,视频,图片
|
||
if($fileType == 'Flash'){
|
||
$upload = U('Admin/Ueditor/videoUp',array('savepath'=>$path,'pictitle'=>'banner','dir'=>'video'));
|
||
$type = 'mp4,3gp,flv,avi,wmv';
|
||
}else{
|
||
$upload = U('Admin/Ueditor/imageUp',array('savepath'=>$path,'pictitle'=>'banner','dir'=>'images'));
|
||
$type = 'jpg,png,gif,jpeg';
|
||
}
|
||
$info = array(
|
||
'num'=> I('num/d'),
|
||
'fileType'=> $fileType,
|
||
'title' => '',
|
||
'upload' =>$upload,
|
||
'fileList'=>U('Admin/Uploadify/fileList',array('path'=>$path)),
|
||
'size' => $image_upload_limit_size/(1024 * 1024).'M',
|
||
'type' =>$type,
|
||
'input' => I('input'),
|
||
'func' => empty($func) ? 'undefined' : $func,
|
||
);
|
||
$this->assign('info',$info);
|
||
return $this->fetch();
|
||
}
|
||
|
||
|
||
/**
|
||
* 删除上传的图片,视频
|
||
*/
|
||
public function delupload(){
|
||
$action = I('action','del');
|
||
$filename= I('filename');
|
||
$filename= empty($filename) ? I('url') : $filename;
|
||
$filename= str_replace('../','',$filename);
|
||
$filename= trim($filename,'.');
|
||
$filename= trim($filename,'/');
|
||
if($action=='del' && !empty($filename) && file_exists($filename)){
|
||
$filetype = strtolower(strstr($filename,'.'));
|
||
$phpfile = strtolower(strstr($filename,'.php')); //排除PHP文件
|
||
$erasable_type = C('erasable_type'); //可删除文件
|
||
if(!in_array($filetype,$erasable_type) || $phpfile){
|
||
exit;
|
||
}
|
||
if(unlink($filename)){
|
||
$this->deleteWechatImage(I('url'));
|
||
echo 1;
|
||
}else{
|
||
echo 0;
|
||
}
|
||
exit;
|
||
}
|
||
}
|
||
|
||
public function fileList()
|
||
{
|
||
/* 判断类型 */
|
||
$type = I('type','Images');
|
||
switch ($type){
|
||
/* 列出图片 */
|
||
case 'Images' : $allowFiles = 'png|jpg|jpeg|gif|bmp';break;
|
||
|
||
case 'Flash' : $allowFiles = 'mp4|3gp|flv|avi|wmv|flash|swf';break;
|
||
|
||
/* 列出文件 */
|
||
default : $allowFiles = '.+';
|
||
}
|
||
|
||
$path = UPLOAD_PATH.I('path','temp');
|
||
//echo file_exists($path);echo $path;echo '--';echo $allowFiles;echo '--';echo $key;exit;
|
||
$listSize = 100000;
|
||
|
||
$key = empty($_GET['key']) ? '' : $_GET['key'];
|
||
|
||
/* 获取参数 */
|
||
$size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $listSize;
|
||
$start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0;
|
||
$end = $start + $size;
|
||
|
||
/* 获取文件列表 */
|
||
$files = $this->getfiles($path, $allowFiles, $key,['public/upload/goods/thumb']);
|
||
if (!count($files)) {
|
||
echo json_encode(array(
|
||
"state" => "没有相关文件",
|
||
"list" => array(),
|
||
"start" => $start,
|
||
"total" => count($files)
|
||
));
|
||
exit;
|
||
}
|
||
|
||
/* 获取指定范围的列表 */
|
||
$len = count($files);
|
||
for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--){
|
||
$list[] = $files[$i];
|
||
}
|
||
|
||
/* 返回数据 */
|
||
$result = json_encode(array(
|
||
"state" => "SUCCESS",
|
||
"list" => $list,
|
||
"start" => $start,
|
||
"total" => count($files)
|
||
));
|
||
|
||
echo $result;
|
||
}
|
||
|
||
/**
|
||
* 遍历获取目录下的指定类型的文件
|
||
* @param $path
|
||
* @param array $files
|
||
* @return array
|
||
*/
|
||
private function getfiles($path, $allowFiles, $key,$ignore = array(), &$files = array()){
|
||
if (!is_dir($path)) return null;
|
||
if(substr($path, strlen($path) - 1) != '/') $path .= '/';
|
||
$handle = opendir($path);
|
||
while (false !== ($file = readdir($handle))) {
|
||
if ($file != '.' && $file != '..') {
|
||
$path2 = $path . $file;
|
||
if (is_dir($path2) && !in_array($path2,$ignore)) {
|
||
$this->getfiles($path2, $allowFiles, $key,array(), $files);
|
||
} else {
|
||
if (preg_match("/\.(".$allowFiles.")$/i", $file) && preg_match("/.*". $key .".*/i", $file)) {
|
||
$files[] = array(
|
||
'url'=> '/'.$path2,
|
||
'name'=> $file,
|
||
'mtime'=> filemtime($path2)
|
||
);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return $files;
|
||
}
|
||
|
||
public function preview(){
|
||
|
||
// 此页面用来协助 IE6/7 预览图片,因为 IE 6/7 不支持 base64
|
||
$DIR = 'preview';
|
||
// Create target dir
|
||
if (!file_exists($DIR)) {
|
||
@mkdir($DIR);
|
||
}
|
||
|
||
$cleanupTargetDir = true; // Remove old files
|
||
$maxFileAge = 5 * 3600; // Temp file age in seconds
|
||
|
||
if ($cleanupTargetDir) {
|
||
if (!is_dir($DIR) || !$dir = opendir($DIR)) {
|
||
die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "Failed to open temp directory."}, "id" : "id"}');
|
||
}
|
||
|
||
while (($file = readdir($dir)) !== false) {
|
||
$tmpfilePath = $DIR . DIRECTORY_SEPARATOR . $file;
|
||
// Remove temp file if it is older than the max age and is not the current file
|
||
if (@filemtime($tmpfilePath) < time() - $maxFileAge) {
|
||
@unlink($tmpfilePath);
|
||
}
|
||
}
|
||
closedir($dir);
|
||
}
|
||
|
||
$src = file_get_contents('php://input');
|
||
if (preg_match("#^data:image/(\w+);base64,(.*)$#", $src, $matches)) {
|
||
$previewUrl = sprintf(
|
||
"%s://%s%s",
|
||
isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
|
||
$_SERVER['HTTP_HOST'],$_SERVER['REQUEST_URI']
|
||
);
|
||
$previewUrl = str_replace("preview.php", "", $previewUrl);
|
||
$base64 = $matches[2];
|
||
$type = $matches[1];
|
||
if ($type === 'jpeg') {
|
||
$type = 'jpg';
|
||
}
|
||
|
||
$filename = md5($base64).".$type";
|
||
$filePath = $DIR.DIRECTORY_SEPARATOR.$filename;
|
||
|
||
if (file_exists($filePath)) {
|
||
die('{"jsonrpc" : "2.0", "result" : "'.$previewUrl.'preview/'.$filename.'", "id" : "id"}');
|
||
} else {
|
||
$data = base64_decode($base64);
|
||
$filePathLower = strtolower($filePath);
|
||
if (strstr($filePathLower, '../') || strstr($filePathLower, '..\\') || strstr($filePathLower, '.php')) {
|
||
die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "文件上传格式错误 error !"}}');
|
||
}
|
||
file_put_contents($filePath, $data);
|
||
die('{"jsonrpc" : "2.0", "result" : "'.$previewUrl.'preview/'.$filename.'", "id" : "id"}');
|
||
}
|
||
} else {
|
||
die('{"jsonrpc" : "2.0", "error" : {"code": 100, "message": "un recoginized source"}}');
|
||
}
|
||
}
|
||
|
||
public function wechatImageList($listSize, $get)
|
||
{
|
||
$size = isset($get['size']) ? intval($get['size']) : $listSize;
|
||
$start = isset($get['start']) ? intval($get['start']) : 0;
|
||
|
||
$logic = new \app\common\logic\WechatLogic;
|
||
return $logic->getPluginImages($size, $start);
|
||
}
|
||
|
||
public function deleteWechatImage($file_path)
|
||
{
|
||
$logic = new \app\common\logic\WechatLogic;
|
||
$logic->deleteImage($file_path);
|
||
}
|
||
} |