wesley.chen %!s(int64=7) %!d(string=hai) anos
pai
achega
e7f9c91181

+ 92 - 6
app/Helper/AttachmentHelper.php

xqd xqd
@@ -92,6 +92,84 @@ trait AttachmentHelper
             return ErrorCode::ATTACHMENT_UPLOAD_INVALID;
         }
 
+    }
+
+    public function aliUpload(Request $request, $key, $tag = 'files', $size = 10 * 1024 * 1024, array $mimeType = []){
+
+        if ($request->hasFile($key)) {
+            $rel_path = '/upload/' . $tag . '/' . date('Ymd');
+            $path = public_path() . $rel_path;
+            if (!file_exists($path)) {
+                if (!@mkdir($path, 0755, true)) {
+                    return ErrorCode::ATTACHMENT_MKDIR_FAILED;
+                }
+            }
+
+            $files = $request->file($key);
+            if ($files === null) {
+                return ErrorCode::ATTACHMENT_UPLOAD_INVALID;
+            }
+            if ($files instanceof UploadedFile) {
+                $files = [$files];
+            }
+
+            $result = [];
+            foreach ($files as $idx => $file) {
+                if (!$file->isValid()) {
+                    $result[$idx] = ErrorCode::ATTACHMENT_UPLOAD_INVALID;
+                    continue;
+                }
+
+                $fileSize = $file->getSize();
+                if ($fileSize > $size) {
+                    $result[$idx] = ErrorCode::ATTACHMENT_SIZE_EXCEEDED;
+                    continue;
+                }
+
+                $fileMimeType = $file->getMimeType();
+                \Log::info("fileMimeType:".$fileMimeType);
+                if (!empty($mimeType) && !in_array($fileMimeType, $mimeType)) {
+                    $result[$idx] = ErrorCode::ATTACHMENT_MIME_NOT_ALLOWED;
+                    continue;
+                }
+
+                $clientName = $file->getClientOriginalName();
+                $md5 = md5($clientName . time());
+                $md5_filename = $md5 . '.' . $file->getClientOriginalExtension();
+
+                try {
+                    $file_Path = $file->getRealPath();
+                    OSS::publicUpload(config('alioss.BucketName'),$md5_filename, $file_Path);
+
+                    $attachment = new BaseAttachmentModel();
+                    $attachment->name = $clientName;
+                    $attachment->md5 = $md5;
+                    $attachment->path = config('alioss.FileUrl').$md5_filename;
+                    $attachment->url = config('alioss.FileUrl').$md5_filename;
+                    $attachment->size = $fileSize;
+                    $attachment->file_type = $fileMimeType;
+
+                    if ($attachment->save()) {
+                        $result[$idx] = $md5;
+                    } else {
+                        OSS::publicDeleteObject(config('alioss.BucketName'),$md5_filename);
+                        $result[$idx] = ErrorCode::ATTACHMENT_SAVE_FAILED;
+                    }
+                } catch (FileException $e) {
+                    $result[$idx] = ErrorCode::ATTACHMENT_MOVE_FAILED;
+                }
+            }
+            if (count($result) == 1) {
+                return array_shift($result);
+            }
+            return $result;
+        } else {
+            return ErrorCode::ATTACHMENT_UPLOAD_INVALID;
+        }
+
+
+
+
     }
 
     /**
@@ -106,15 +184,23 @@ trait AttachmentHelper
             return ErrorCode::ATTACHMENT_NOT_EXIST;
         }
         if (file_exists($attachment->path)) {
-            if (@unlink($attachment->path)) {
-                if ($attachment->delete()) {
-                    return 0;
+            if($attachment->path == $attachment->url){
+                $key = explode('/',$attachment->path);
+                OSS::publicDeleteObject(config('alioss.BucketName'),end($key));
+                return 0;
+            }else{
+                if (@unlink($attachment->path)) {
+                    if ($attachment->delete()) {
+                        return 0;
+                    } else {
+                        return ErrorCode::ATTACHMENT_RECORD_DELETE_FAILED;
+                    }
                 } else {
-                    return ErrorCode::ATTACHMENT_RECORD_DELETE_FAILED;
+                    return ErrorCode::ATTACHMENT_DELETE_FAILED;
                 }
-            } else {
-                return ErrorCode::ATTACHMENT_DELETE_FAILED;
             }
+
+
         } else {
             return ErrorCode::ATTACHMENT_NOT_EXIST;
         }

+ 30 - 23
app/Http/Controllers/Admin/Base/AttachmentController.php

xqd xqd xqd
@@ -33,21 +33,21 @@ class AttachmentController extends Controller
 
             $this->_uploadTemplate($request);
 
-            //上传到本地
-        }elseif(isset($request['position']) && $request['position'] == 'local'){
+            //上传到阿里云
+        }elseif(isset($request['position']) && $request['position'] == 'alioss'){
 
-            $this->_uploadToServer($request);
+            $this->_uploadToAlioss($request);
 
             //上传专题文件
-        }elseif(isset($request['position']) && $request['position'] == 'special'){
+        }
+        elseif(isset($request['position']) && $request['position'] == 'special'){
 
             $this->_uploadSpecial($request);
 
-            //上传到阿里云
+            //上传到本地
         } else{
 
-            $this->_uploadToAlioss($request);
-
+            $this->webupload($request);
         }
     }
 
@@ -81,17 +81,19 @@ class AttachmentController extends Controller
     private function _uploadToAlioss($request)
     {
         $return = [];
-        if(isset($request['KindEditor'])){
-            $data = $this->_serviceAttachment->aliUpload($request['field'], $request);
+        if(isset($request['editor'])){
+            $data = $this->_serviceAttachment->aliUpload('upfile', $request);
             if($data['code'] === 200){
-                $return['error'] = 0;
+                \Log::info(json_encode($data));
+                $return['state'] = 'SUCCESS';
                 $return['url']   = $data['fileurl'];
+                $return['title']   = $data['name'];
             }else{
                 $return['error']    = 1;
                 $return['message']  = $data['message'];
             }
         }else{
-            $return = $this->_serviceAttachment->aliUpload('Filedata', $request);
+            $return = $this->_serviceAttachment->aliUpload('file', $request,'files');
         }
         echo json_encode($return);exit;
     }
@@ -99,19 +101,24 @@ class AttachmentController extends Controller
     /**
      * 控件上传
      */
-    public function webupload()
+    public function webupload($request)
     {
-        $request = request()->all();
-        $data = $this->_serviceAttachment->localUpload('file', $request, 'files');
-//        return response()->json(array('data' => $data), 200);
-        echo json_encode($data);exit;
-    }
-
-    public function fileupload(){
-        $request = request()->all();
-        $data = $this->_serviceAttachment->fileUpload('file', $request, 'files');
-//        return response()->json(array('data' => $data), 200);
-        echo json_encode($data);exit;
+        $return = [];
+        if(isset($request['editor'])){
+            $data = $this->_serviceAttachment->localUpload('upfile', $request, 'files');
+            if($data['code'] === 200){
+                \Log::info(json_encode($data));
+                $return['state'] = 'SUCCESS';
+                $return['url']   = $data['fileurl'];
+                $return['title']   = $data['name'];
+            }else{
+                $return['error']    = 1;
+                $return['message']  = $data['message'];
+            }
+        }else{
+            $return = $this->_serviceAttachment->localUpload('file', $request, 'files');
+        }
+        echo json_encode($return);exit;
     }
 
 

+ 10 - 2
app/Http/Controllers/Admin/Base/PhotosController.php

xqd xqd xqd xqd
@@ -6,6 +6,7 @@ use App\Http\Controllers\Admin\Controller;
 use App\Services\Base\Attachment;
 use App\Models\BaseAttachmentModel;
 use App\Models\ClassModel;
+use App\Services\OSS;
 use Illuminate\Http\Request as HttpRequest;
 use Request;
 use File;
@@ -38,7 +39,7 @@ class PhotosController extends Controller
             }
         }
 
-    	return view('admin.base.photos.index', compact('photos', 'classes', 'a_class', 'photos', 'status', 'photo_compress_quality'));
+        return view('admin.base.photos.index', compact('photos', 'classes', 'a_class', 'photos', 'status', 'photo_compress_quality'));
     }
 
     public function edit(HttpRequest $request)
@@ -77,8 +78,14 @@ class PhotosController extends Controller
         $ids = explode(',', $request->input('ids'));
         $photos = BaseAttachmentModel::find($ids);
         foreach($photos as $photo) {
-            File::delete($photo->path);
+            if($photo->path == $photo->url){
+                $key = explode('/',$photo->path);
+                OSS::publicDeleteObject(config('alioss.BucketName'),end($key));
+            }else{
+                File::delete($photo->path);
+            }
             $photo->delete();
+
         }
         return back();
     }
@@ -93,4 +100,5 @@ class PhotosController extends Controller
 
         return response()->json(['status' => 'ok'], 200);
     }
+
 }

+ 8 - 8
app/Http/Controllers/Api/V1/HomeController.php

xqd xqd xqd xqd xqd xqd xqd xqd
@@ -430,7 +430,7 @@ class HomeController extends Controller
 
         if(!$user){
             $data = [
-                'code' => '2000',
+                'code' => 401,
                 'msg'  => 'token已过期,请重新登录',
             ];
             return $this->api($data);
@@ -535,7 +535,7 @@ class HomeController extends Controller
 
         if(!$user){
             $data = [
-                'code' => '2000',
+                'code' => '401',
                 'msg'  => 'token已过期,请重新登录',
             ];
             return $this->api($data);
@@ -681,7 +681,7 @@ class HomeController extends Controller
 
         if(!$user){
             $data = [
-                'code' => '2000',
+                'code' => '401',
                 'msg'  => 'token已过期,请重新登录',
             ];
             return $this->api($data);
@@ -792,7 +792,7 @@ class HomeController extends Controller
 
         if(!$user){
             $data = [
-                'code' => '2000',
+                'code' => '401',
                 'msg'  => 'token已过期,请重新登录',
             ];
             return $this->api($data);
@@ -860,7 +860,7 @@ class HomeController extends Controller
 
         if(!$user){
             $data = [
-                'code' => '2000',
+                'code' => '401',
                 'msg'  => 'token已过期,请重新登录',
             ];
             return $this->api($data);
@@ -937,7 +937,7 @@ class HomeController extends Controller
 
         if(!$user){
             $data = [
-                'code' => '2000',
+                'code' => '401',
                 'msg'  => 'token已过期,请重新登录',
             ];
             return $this->api($data);
@@ -1040,7 +1040,7 @@ class HomeController extends Controller
 
         if(!$user){
             $data = [
-                'code' => '2000',
+                'code' => '401',
                 'msg'  => 'token已过期,请重新登录',
             ];
             return $this->api($data);
@@ -1128,7 +1128,7 @@ class HomeController extends Controller
 
         if(!$user){
             $data = [
-                'code' => '2000',
+                'code' => '401',
                 'msg'  => 'token已过期,请重新登录',
             ];
             return $this->api($data);

+ 61 - 178
app/Services/Base/Attachment.php

xqd xqd xqd xqd xqd xqd xqd xqd
@@ -13,6 +13,7 @@
 namespace App\Services\Base;
 
 use App\Models\BaseAttachmentModel;
+use App\Services\OSS;
 use Response;
 use App\Models\BaseSettingsModel;
 use Image;
@@ -24,140 +25,10 @@ class Attachment
         if( !$this->_model ) $this->_model = new BaseAttachmentModel();
     }
 
-    public function aliUpload(){
-
-    }
-
-    public function specialUpload(){
-
-    }
-
-
-    public function _uploadfiles(){
-
-    }
-
-
-    public function _jsonMessage($status,$ret){
-        $ret['code'] = $status;
-        return $ret;
-    }
-//    /**
-//     * 上传到本地服务器
-//     * @param $field
-//     * @param $request
-//     */
-//    public function localUpload($field = '', $request = array())
-//    {
-//        $uploadfiles = $this->_uploadfiles($field);
-//        if(!$uploadfiles){
-//            return $this->_jsonMessage(FAILURE_CODE, $request['elementid'], ['message' => '没有文件被上传']);
-//        }
-//
-//        //文件夹路径
-//        $folder = isset($request['folder']) ? $request['folder'] : 'common';
-//
-//        //上传的文件名是否MD5
-//        $is_md5 = isset($request['is_md5']) ? $request['is_md5'] : 1;
-//        if($is_md5){
-//            $fileurl = $folder . '/' . md5_file($uploadfiles[0]['tmp_name']);
-//        }else{
-//            $fileName = basename($uploadfiles[0]['name'], "." . substr(strrchr($uploadfiles[0]['name'], '.'), 1));
-//            $fileurl = $folder . '/' . $fileName;
-//        }
-//
-//        $filePath = public_path() . DIRECTORY_SEPARATOR . $fileurl;
-//        $dirPath = public_path() . DIRECTORY_SEPARATOR .$folder;
-//
-//        //创建目录
-//        if(!is_dir($dirPath)){
-//            @mkdir($dirPath, 0755, true)
-////            $this->_dirUtil->dirCreate($dirPath);
-//        }
-//        /*if(!file_exists($filePath)){
-//            $this->_dirUtil->dirCreate($filePath);
-//        }*/
-//
-//        //获取文件后缀名
-//        $fileext = strtolower(trim(substr(strrchr($uploadfiles[0]['name'], '.'), 1, 10)));
-//
-//        //判断是否需要解包
-//        $is_extract = isset($request['is_extract']) ? $request['is_extract'] : 0;
-//        if($is_extract && $fileext == 'zip'){   //ZIP解压
-//
-////            $message = $this->_zipTool($uploadfiles[0]['tmp_name'], $filePath);
-//
-//        }elseif($is_extract && $fileext == 'rar'){  //RAR解压
-//
-//            if(!get_extension_funcs('rar')){
-//                return $this->_jsonMessage(500, $request['elementid'], ['message' => '没有发现RAR扩展库']);
-//            }else{
-////                $message = $this->_rarTool($uploadfiles[0]['tmp_name'], $filePath);
-//            }
-//
-//        }else{
-//
-//            $fileurl = $filePath . '.' . $fileext;
-//            if(move_uploaded_file($uploadfiles[0]['tmp_name'], $fileurl)){
-//                $fileurl = trim(str_replace(public_path(), '', $fileurl), '\\');
-//                return $this->_jsonMessage(SUCESS_CODE, $request['elementid'], ['message' => '文件上传成功', 'fileurl' => $fileurl]);
-//            }else{
-//                return $this->_jsonMessage(FAILURE_CODE, $request['elementid'], ['message' => '文件上传成功', 'fileurl' => '']);
-//            }
-//
-//        }
-//            $attachment = new BaseAttachmentModel();
-//            $attachment->name = $clientName;
-//            $attachment->md5 = $md5;
-//            $attachment->path = $real_path;
-//            $attachment->url = $url_path;
-//            $attachment->size = $fileSize;
-//            $attachment->file_type = $fileMimeType;
-//            if ($attachment->save()) {
-//                $result = 'Foundation/Attachment/download/?md5='.$md5;
-//            } else {
-//                @unlink($real_path);
-//                $result= ErrorCode::ATTACHMENT_SAVE_FAILED;
-//            }
-//        if($message['code'] == 200){
-//            //修改文件夹为只读属性
-//            //chmod($filePath, 0444);
-//        }else{
-//            if(file_exists($filePath)){
-//                rmdir($filePath);
-//            }
-//        }
-//        return $this->_jsonMessage($message['code'], $request['elementid'], ['message' => $message['message'], 'fileurl' => $fileurl,'name'=>basename($uploadfiles[0]['name'], '.' . $fileext)]);
-//    }
-
-    /**
-     * 上传附件
-     *
-     * @param string|array $field 文件key
-     * @param Request $request  laravel's http request
-     * @param string $tag       文件tag
-     * @param int $size         文件size限制,默认2M
-     * @param array $mimeType   文件mime类型限制,默认不限
-     * @return array|string|int 返回:md5字串|ErrorCode或[md5字串|ErrorCode]
-     */
-
-
-    public function localUpload($field, $request, $tag = 'files', $size = 10 * 1024 * 1024, array $mimeType = ['image/jpeg', 'image/png', 'image/gif','video/mp4','video/quicktime','text/plain'])
-    {
-
-        $tag = $request['folder'];
+    public function aliUpload($field, $request, $tag = 'files', $size = 1 * 1024 * 1024, array $mimeType = ['image/jpeg', 'image/png', 'image/gif','video/mp4','video/quicktime']){
         $class = isset($request['class']) ? $request['class'] : '未分类';
         $sizex = isset($request['sizex']) ? $request['sizex'] : 0;
         $sizey = isset($request['sizey']) ? $request['sizey'] : 0;
-        $rel_path = $tag . '/' . date('Ymd');
-        $path = public_path() . $rel_path;
-        // dd($request);
-        if (!file_exists($path)) {
-            if (!@mkdir($path, 0755, true)) {
-//              return ErrorCode::ATTACHMENT_MKDIR_FAILED;
-                return $this->_jsonMessage(500,  ['message' => '目录创建失败']);
-            }
-        }
 
         $file = $request[$field];
         if ($file === null) {
@@ -169,11 +40,9 @@ class Attachment
 
         $fileSize = $file->getSize();
         if ($fileSize > $size) {
-//            $result[$idx] = ErrorCode::ATTACHMENT_SIZE_EXCEEDED;
             return $this->_jsonMessage(500,  ['message' => '文件大小超过限制']);
         }
         $fileMimeType = $file->getMimeType();
-
         if (!empty($mimeType) && !in_array($fileMimeType, $mimeType)) {
             return $this->_jsonMessage(500,  ['message' => '文件格式不被允许']);
         }
@@ -186,65 +55,71 @@ class Attachment
             $md5_filename = $md5_filename . 'png';
         }
 
+        $file_Path = $file->getRealPath();
         try {
-            if(!$file->move($path, $md5_filename)){
-                return $this->_jsonMessage(500,  ['message' => '上传失败']);
-            }
-
-//            $quality = 75;
-//            $modal = null;
-//            if(($modal = BaseSettingsModel::where('key', env('PHOTO_COMPRESS_QUALITY_KEY'))->first()) != null) {
-//                $quality = $modal->value;
-//            }
+            $ok = OSS::publicUpload(config('alioss.BucketName'),$md5_filename, $file_Path);
 
-            $real_path = $path . '/' . $md5_filename;
-            $url_path = $rel_path . '/' . $md5_filename;
-
-            $source_info = null;
-            if(($source_info = getimagesize($real_path)) != null) {
-                $source_width = $source_info[0];
-                $source_height = $source_info[1];
-                \Log::info('$source_width'.$source_width.'$source_height'.$source_height);
-                if($sizex || $sizey){
-                    if($sizex==0){
-                        $sizex = $source_width*($sizey/$source_height);
-                    }
-                    if($sizey==0){
-                        $sizey = $source_height*($sizex/$source_width);
-                    }
-                    \Log::info('$sizex'.$sizex.'$sizey'.$sizey);
-                    Image::make($real_path)->resize($sizex, $sizey)->save($real_path);
-                }
+            if(!$ok){
+                return $this->_jsonMessage(500,  ['message' => '上传失败']);
             }
 
             $attachment = new BaseAttachmentModel();
             $attachment->name = $clientName;
             $attachment->md5 = $md5;
-            $attachment->path = $real_path;
-            $attachment->url = $url_path;
+            $attachment->path = config('alioss.FileUrl').$md5_filename;
+            $attachment->url = config('alioss.FileUrl').$md5_filename;
             $attachment->size = $fileSize;
             $attachment->file_type = $fileMimeType;
             $attachment->class = $class;
             if ($attachment->save()) {
-                return $this->_jsonMessage(200,  ['message' => "上传成功", 'fileurl' => $url_path,'name'=>$md5_filename]);
-
+                return $this->_jsonMessage(200,  ['message' => "上传成功", 'fileurl' => config('alioss.FileUrl').$md5_filename,'name'=>$md5_filename]);
             } else {
-                @unlink($real_path);
+                OSS::publicDeleteObject(config('alioss.BucketName'),$md5_filename);
                 return $this->_jsonMessage(500,  ['message' => '数据库保存错误']);
-//                $result= ErrorCode::ATTACHMENT_SAVE_FAILED;
             }
         } catch (FileException $e) {
-            return $this->_jsonMessage(500,  ['message' => '上传失败']);
-//            $result = ErrorCode::ATTACHMENT_MOVE_FAILED;
+            return $this->_jsonMessage(500,  ['message' => '保存失败']);
+
         }
+
     }
 
-    public function fileUpload($field, $request, $tag = 'files', $size = 10 * 1024 * 1024, array $mimeType = ['image/jpeg', 'image/png', 'image/gif','video/mp4','video/quicktime','text/plain']){
+    public function specialUpload(){
+
+    }
+
+
+    public function _uploadfiles(){
+
+    }
+
+
+    public function _jsonMessage($status,$ret){
+        $ret['code'] = $status;
+        return $ret;
+    }
+
+
+    /**
+     * 上传附件
+     *
+     * @param string|array $field 文件key
+     * @param Request $request  laravel's http request
+     * @param string $tag       文件tag
+     * @param int $size         文件size限制,默认2M
+     * @param array $mimeType   文件mime类型限制,默认不限
+     * @return array|string|int 返回:md5字串|ErrorCode或[md5字串|ErrorCode]
+     */
+
+
+    public function localUpload($field, $request, $tag = 'files', $size = 10 * 1024 * 1024, array $mimeType = ['image/jpeg', 'image/png', 'image/gif','video/mp4','video/quicktime'])
+    {
+
         $tag = $request['folder'];
         $class = isset($request['class']) ? $request['class'] : '未分类';
         $sizex = isset($request['sizex']) ? $request['sizex'] : 0;
         $sizey = isset($request['sizey']) ? $request['sizey'] : 0;
-        $rel_path = $tag . '/' . date('Ymd');
+        $rel_path = '/image/'.$tag . '/' . date('Ymd');
         $path = public_path() . $rel_path;
         // dd($request);
         if (!file_exists($path)) {
@@ -253,8 +128,9 @@ class Attachment
                 return $this->_jsonMessage(500,  ['message' => '目录创建失败']);
             }
         }
-
+        \Log::info($request);
         $file = $request[$field];
+
         if ($file === null) {
             return $this->_jsonMessage(500,  ['message' => '没有文件被上传']);
         }
@@ -268,7 +144,6 @@ class Attachment
             return $this->_jsonMessage(500,  ['message' => '文件大小超过限制']);
         }
         $fileMimeType = $file->getMimeType();
-
         if (!empty($mimeType) && !in_array($fileMimeType, $mimeType)) {
             return $this->_jsonMessage(500,  ['message' => '文件格式不被允许']);
         }
@@ -286,12 +161,6 @@ class Attachment
                 return $this->_jsonMessage(500,  ['message' => '上传失败']);
             }
 
-//            $quality = 75;
-//            $modal = null;
-//            if(($modal = BaseSettingsModel::where('key', env('PHOTO_COMPRESS_QUALITY_KEY'))->first()) != null) {
-//                $quality = $modal->value;
-//            }
-
             $real_path = $path . '/' . $md5_filename;
             $url_path = $rel_path . '/' . $md5_filename;
 
@@ -312,8 +181,22 @@ class Attachment
                 }
             }
 
+            $attachment = new BaseAttachmentModel();
+            $attachment->name = $clientName;
+            $attachment->md5 = $md5;
+            $attachment->path = $real_path;
+            $attachment->url = $url_path;
+            $attachment->size = $fileSize;
+            $attachment->file_type = $fileMimeType;
+            $attachment->class = $class;
+            if ($attachment->save()) {
                 return $this->_jsonMessage(200,  ['message' => "上传成功", 'fileurl' => $url_path,'name'=>$md5_filename]);
 
+            } else {
+                @unlink($real_path);
+                return $this->_jsonMessage(500,  ['message' => '数据库保存错误']);
+//                $result= ErrorCode::ATTACHMENT_SAVE_FAILED;
+            }
         } catch (FileException $e) {
             return $this->_jsonMessage(500,  ['message' => '上传失败']);
 //            $result = ErrorCode::ATTACHMENT_MOVE_FAILED;

+ 61 - 2
app/Widget/Tools/ImgUpload.php

xqd xqd xqd xqd
@@ -96,6 +96,63 @@ EOF;
 
     }
 
+    public function single2($folder, $id, $name="data", $file="", $option=[]){
+        $folder = urlencode($folder);
+        $imgHtml =  "";
+        $option['callback'] = isset($option['callback']) ? $option['callback'] : "";
+        $option['watermark'] = isset($option['watermark']) ? $option['watermark'] : "";
+        $option['sizex'] = isset($option['sizex']) ? $option['sizex'] : "";
+        $option['sizey'] = isset($option['sizey']) ? $option['sizey'] : "";
+        $position = isset($option['position']) ? $option['position'] : 'local';
+        if(!$option['callback'] && !empty($file)) {  //$img错误!已改$file gq
+            if(!is_array($file)){
+                $img['url'] = $file;
+                $img['alt'] = '';
+            }else{
+                $img = $file;
+            }
+
+            $iconImage = in_array(fileExt($img['url']), ['jpg', 'png' , 'gif' , 'jpeg' , 'bmp']) ? " <div class='image'><img src=\"{$img['url']}\" alt= /></div>" : "<div class='icon'><i class='fa fa-file'></i></div>";
+
+            $imgHtml .="<li >
+                    <div class=\"file\">
+                        <span class=\"corner\"></span>
+                        {$iconImage}
+                        <div class=\"file-name\">
+                            <p>{$img['alt']}</p>
+                            <small></small>
+                        </div>
+                    </div>
+                    <em class=\"close\" onclick=\"$(this).parent().remove()\" >×</em>
+                    <input type=\"hidden\" name=\"data[{$name}]\" value=\"{$img['url']}\">
+                    </li>";
+        }
+
+        $html = <<<EOF
+           <script type="text/javascript" src="/base/plugins/imguploader/uploader.js"></script>
+            <div class="layout_upload">
+                <ul class="ullit">
+                    $imgHtml
+                    <li>
+                        <a class="layout_upload_but" id="$id">&nbsp;</a>
+                    </li>
+                    <div class="ov_h"></div>
+                </ul>
+            </div>
+            <script type="text/javascript">
+
+            new upload({
+                UploaderPick:"#$id",
+                UploaderMax:0,
+                UploadHiddenField:"data[$name]",
+                UploaderServer:"/admin/Base/Attachment/upload?elementid=&position={$position}&watermark={$option['watermark']}&&sizex={$option['sizex']}&&sizey={$option['sizey']}&folder=$folder&_time=" + Math.random(),
+                UploaderSingle:true
+            });
+        </script>
+EOF;
+        return $html;
+    }
+
     /**
      * 统一多张图片
      * @param $folder
@@ -195,6 +252,7 @@ EOF;
         $option['watermark'] = isset($option['watermark']) ? $option['watermark'] : "";
         $option['sizex'] = isset($option['sizex']) ? $option['sizex'] : "";
         $option['sizey'] = isset($option['sizey']) ? $option['sizey'] : "";
+        $position = isset($option['position']) ? $option['position'] : 'local';
         $class = isset($option['class']) ? $option['class'] : "";
         if(!$option['callback'] && !empty($imgs)) {
             foreach($imgs as $key=>$val) {
@@ -239,7 +297,7 @@ EOF;
             new upload({
                 UploaderPick:"#$id",
                 UploaderMax:{$option['max']},
-                UploaderServer:"/admin/Base/Attachment/webupload?elementid=&watermark={$option['watermark']}&sizex={$option['sizex']}&sizey={$option['sizey']}&folder=$folder&class=$class&_time=" + Math.random(),
+                UploaderServer:"/admin/Base/Attachment/upload?elementid=&position={$position}&watermark={$option['watermark']}&sizex={$option['sizex']}&sizey={$option['sizey']}&folder=$folder&class=$class&_time=" + Math.random(),
                 UploadHiddenField:"$name"
             });
         </script>
@@ -263,7 +321,8 @@ EOF;
         $upload_btn = $id . '-upload-btn';
         $uploader = $id . '_uploader';
         $url = isset($option['url']) ? $option['url'] : 'empty';
-        $upload_url = "/admin/Base/Attachment/webupload?folder=" . $folder;
+        $positon = isset($option['position']) ? $option['position'] : 'local';
+        $upload_url = "/admin/Base/Attachment/upload?folder=" . $folder ."&position=".$positon;
         foreach ($option as $key => $val) {
             $upload_url = $upload_url . '&' . $key . '=' . $val;
         }