1 <?php
  2 //html部分
  3 <div class="form-group">
  4   <label class="col-sm-2 control-label" for="upload">图片上传:</label>
  5     <div class="col-sm-8">
  6       <input type="file" name="upload" id="upload" class="file">
  7         <input type="hidden"  name="filepath" id="filepath"  class="form-control" >
  8         <ul class="affix-list" id="fileList"></ul>
  9         <p class="ws_break text-muted">
 10               <small>一次最多传1个,每个文件大小上限2M,格式:*.jpg;*.jpeg;*.gif;*.bmp;*.png;</small>
 11        </p>
 12 
 13         <script type="text/javascript">
 14         $(function(){
 15              uploadify(
 16                 {
 17                      debug:false,
 18                      text:'上传附件',
 19                      auto:true,
 20                      file:'upload',
 21                      hide:false,
 22                      resText:'filepath',
 23                      exts:'*.jpg;*.jpeg;*.gif;*.bmp;*.png;',
 24                      limit:1
 25                  },
 26                  {
 27                     taskId:'{$taskId}',
 28                     objType:'work'
 29                  },
 30                      uploadResponse
 31                  );
 32         })
 33             function uploadResponse(json){
 34                 $("#fileList").append('<li class="affix-list-item">'+json.msg.name+'</li>');
 35         }
 36         </script>
 37     </div>
 38 
 39 </div>
 40 //JS部分
 41 /**
 42  * 文件上传
 43  * @param paramReg
 44  * @param contrReg
 45  */
 46 function uploadify(paramReg, contrReg,uploadResponse) {
 47     var paramReg = paramReg ? paramReg : {};
 48     var contrReg = contrReg ? contrReg : {};
 49     var uploadify = {};
 50     var auto = paramReg.auto == true ? true : false;//是否自动提交
 51     var debug = paramReg.debug == true ? true : false;//是否开启debug调试
 52     var hide = paramReg.hide == true ? true : false;//上传完成后是否隐藏文件域
 53     var swf = paramReg.swf ? paramReg.swf : 'static/js/uploadify/uploadify.swf';//flash路径
 54     var uploader = paramReg.uploader ? paramReg.uploader
 55             : 'index.php?do=ajax&view=upload&flash=1';////上传基本路径
 56     var deleter = paramReg.deleter ? paramReg.deleter
 57             : 'index.php?do=ajax&view=upload&action=delete';//文件删除路径
 58     var file = fname = paramReg.file ? paramReg.file : 'upload';//file 表单名name=id=upload
 59     var size = paramReg.size;//文件大小限制
 60     var exts = paramReg.exts;//文件类型限制
 61     var resText=paramReg.resText;
 62 
 63     var method = paramReg.m ? paramReg.m : 'post';//上传方式
 64     var limit = paramReg.limit ? paramReg.limit : 1;//上传个数限制
 65     var qlimit = paramReg.qlimit ? paramReg.qlimit : 999;
 66     var objType   = contrReg.objType?contrReg.objType:'task';
 67     var taskId   =    parseInt(contrReg.taskId)+0;
 68     var workId   = parseInt(contrReg.workId)+0;
 69     var fileType  = contrReg.fileType?contrReg.fileType:'att';
 70     var text = paramReg.text ? paramReg.text : '上传文件';//按钮文字
 71     var sessionId = contrReg.sessionId ? contrReg.sessionId : '';
 72     var pre = contrReg.mode == 'back' ? '../../' : '';
 73     swf = pre + swf;
 74     deleter = pre + deleter;
 75     uploader = pre + uploader +'&fileType='+fileType+'&filename=' + file+'&objType='+objType+'&taskId='+taskId+'&workId='+workId;
 76     uploadify.auto = auto;
 77     uploadify.debug = debug;
 78     uploadify.hide = hide;
 79     uploadify.swf = swf;
 80     uploadify.uploader = uploader;
 81     uploadify.deleter = deleter;
 82     uploadify.fileObjName = file;
 83     uploadify.fileSizeLimit = size;
 84     uploadify.fileTypeExts = exts;
 85     uploadify.resText=resText;
 86     uploadify.uploadLimit = limit;
 87     uploadify.formData = {'PHPSESSID':sessionId};
 88     uploadify.queueSizeLimit = qlimit;
 89     uploadify.method = method;
 90     uploadify.buttonText = text;
 91     uploadify.removeTimeout = 1;
 92     uploadify.removeCompleted = hide;
 93     uploadify.onUploadSuccess = function(file, json, response) {
 94         //console.log(json);
 95         json = eval('(' + json + ')');
 96         if (json.err) {
 97             if (msgType == 1) {
 98                 tipsOp(decodeURI(json.err));
 99             } else {
100                 tipsOp(decodeURI(json.err));
101             }
102             return false;
103         } else {
104 
105             if($("#filepath")){
106                 if ($("#filepath").val()) {
107                     $("#filepath").val($("#filepath").val() + '|' + json.msg.url);
108                 } else {
109                     $("#filepath").val(json.msg.url);
110                 }
111             }
112             if($("#fileid")){
113                 if ($("#fileid").val()) {
114                     $("#fileid").val($("#fileid").val() + '|' + json.msg.fileid);
115                 } else {
116                     $("#fileid").val(json.msg.fileid);
117                 }
118             }
119             typeof (uploadResponse) == 'function' && uploadResponse(json);
120         }
121     };
122     $("#" + file).uploadify(uploadify);
123 }
124 
125 
126 
127 //PHP部分----上传至阿里云OSS
128 if($action=='delete'){
129     $id = intval($id);
130     if($id){
131         $objFileT = keke_table_class::get_instance('witkey_file');
132         $fileInfo = $objFileT->get_table_info('file_id',$id);
133         if($fileInfo['uid']==$gUid||!$fileInfo['uid']){
134             keke_file_class::del_file($fileInfo['save_name']);
135             $objFileT->del('file_id', $id);
136             echo json_encode(array ('status'=>1));die();
137         }
138     }
139     die();
140 }else{
141     $___y = date ( 'Y' );$___m = date ( 'm' );$___d = date ( 'd' );
142     define ( 'UPLOAD_RULE', "$___y/$___m/$___d/" );
143     $fileFormat = explode('|',$kekezu->_sys_config['file_type']);
144     $maxSize = intval($kekezu->_sys_config['max_size'])*1024*1024;
145     $pathDir = setUploadPath($fileType, $objType);
146     //$upload = new keke_upload_class(S_ROOT.$pathDir ,$fileFormat,$maxSize);
147     /**********************************ali-OSS********************************************/
148 
149     require_once S_ROOT.'alioss/sdk.class.php';
150     $oss = new ALIOSS();
151     $bucket = 'jiamofang';
152     if ($_FILES[$filename]["name"]) {
153         if ($_FILES[$filename]["error"] > 0) {
154             echo json_encode(array ('err' => FALSE, 'msg' => $filename));die();
155         } else {
156 
157             $content = '';
158             $length = 0;
159             $fp = fopen($_FILES[$filename]["tmp_name"],'r');
160             if($fp) {
161                 $f = fstat($fp);
162                 $length = $f['size'];
163                 while(!feof($fp)) {
164                     $content .= fgets($fp,8192);
165                 }
166             }
167             $upload_file_options = array('content' => $content, 'length' => $length);
168             $savenameTemp = setSavename($_FILES[$filename]["name"]);
169             $urlTemp = $pathDir.$savenameTemp;
170             $upload_file_by_content = $oss->upload_file_by_content($bucket, 'ujia/'.$urlTemp, $upload_file_options);
171 
172         }
173         $savename['name'] = $_FILES[$filename]["name"];
174         $savename['saveName'] = $savenameTemp;
175     } else {
176         echo json_encode(array ('err' => FALSE, 'msg' => $filename));die();
177     }
178 
179     /*********************************************************************************/
180 
181     if (is_array ( $savename )) {
182         $name = $savename ['name'];
183         $path = $urlTemp;
184         $objFileT = keke_table_class::get_instance('witkey_file');
185         $arrData = array(
186                 'file_name'    =>strtoupper(CHARSET) =='GBK'?kekezu::utftogbk($savename  ['name']):$savename  ['name'],
187                 'save_name'    =>$path,
188                 'uid'        =>$gUid,
189                 'username'    =>$gUsername,
190                 'obj_type'    =>$objType,
191                 'task_id'    =>$taskId,
192                 'work_id'    =>$workId,
193                 'on_time'   =>time()
194         );
195         //var_dump($arrData);exit;
196         $fileId = $objFileT->save ( $arrData);
197         $msg = array ('url' => $path,'filename' => $filename, 'name' => $name,'fileid'=>intval($fileId));
198     } else{
199         $err = $msg = $savename;
200     }
201     echo json_encode(array ('err' => $err, 'msg' => $msg));die();
202 }
203 
204 function setUploadPath($fileType,$objType){
205     $pathDir = 'data/uploads/';
206     if($fileType =='sys'&&$objType =='auth'){        
207         $pathDir .= $fileType.'/'.$objType.'/';
208     }elseif($fileType =='sys'&&$objType =='ad'){    
209         $pathDir .= $fileType.'/'.$objType.'/';
210     }elseif($fileType =='sys'&&$objType =='mark'){    
211         $pathDir .= $fileType.'/'.$objType.'/';
212     }elseif($fileType =='sys'&&$objType =='tools'){    
213         $pathDir .= $fileType.'/'.$objType.'/';
214     }elseif($fileType =='space'){                    
215         $pathDir .= $fileType.'/';
216     }else{
217         $pathDir .= UPLOAD_RULE;
218     }
219     return $pathDir;
220 }
221 function getExt($fileName) {
222     $ext = explode ( ".", $fileName );
223     $ext = $ext [count ( $ext ) - 1];
224     return strtolower ( $ext );
225 }
226 function setSavename($fileName) {
227     $uniqid = uniqid ( rand () );
228     $name = $uniqid . '.' . getExt($fileName);
229     return $name;
230 }
231 
232 
233 //PHP部分---上传至本地
234 if($action=='delete'){
235     $id = intval($id);
236     if($id){
237         $objFileT = keke_table_class::get_instance('witkey_file');
238         $fileInfo = $objFileT->get_table_info('file_id',$id);
239         if($fileInfo['uid']==$gUid||!$fileInfo['uid']){
240             keke_file_class::del_file($fileInfo['save_name']);
241             $objFileT->del('file_id', $id);
242             echo json_encode(array ('status'=>1));die();
243         }
244     }
245     die();
246 }else{
247     $___y = date ( 'Y' );$___m = date ( 'm' );$___d = date ( 'd' );
248     define ( 'UPLOAD_RULE', "$___y/$___m/$___d/" );
249     $fileFormat = explode('|',$kekezu->_sys_config['file_type']);
250     $maxSize = intval($kekezu->_sys_config['max_size'])*1024*1024;
251     $pathDir = setUploadPath($fileType, $objType);
252     $upload = new keke_upload_class(S_ROOT.$pathDir ,$fileFormat,$maxSize);
253     $savename = $upload->run( $filename , 1);
254     if (is_array ( $savename )) {
255         $name = $savename [0] ['name'];
256         $path = $pathDir. $savename [0] ['saveName'];
257         if($fileType == 'service'){
258             $size_a = array (100, 100 );
259             $size_b = array (210, 210 );
260             $result = keke_img_class::resize ( $path, $size_a, $size_b, true ); 
261         }
262         if($fileType != 'sys'){     
263             keke_glob_class::waterMark($path);
264         }
265         $objFileT = keke_table_class::get_instance('witkey_file');
266         $arrData = array(
267                 'file_name'    =>strtoupper(CHARSET) =='GBK'?kekezu::utftogbk($savename [0] ['name']):$savename [0] ['name'],
268                 'save_name'    =>$path,
269                 'uid'        =>$gUid,
270                 'username'    =>$gUsername,
271                 'obj_type'    =>$objType,
272                 'task_id'    =>$taskId,
273                 'work_id'    =>$workId,
274                 'on_time'   =>time()
275         );
276         $fileId = $objFileT->save ( $arrData);
277         $msg = array ('url' => $path,'filename' => $filename, 'name' => $name,'fileid'=>intval($fileId));
278     }
279     else{
280         $err = $msg = $savename;
281     }
282     echo json_encode(array ('err' => $err, 'msg' => $msg));die();
283 }
284 function setUploadPath($fileType,$objType){
285     $pathDir = 'data/uploads/';
286     if($fileType =='sys'&&$objType =='auth'){        
287         $pathDir .= $fileType.'/'.$objType.'/';
288     }elseif($fileType =='sys'&&$objType =='ad'){    
289         $pathDir .= $fileType.'/'.$objType.'/';
290     }elseif($fileType =='sys'&&$objType =='mark'){    
291         $pathDir .= $fileType.'/'.$objType.'/';
292     }elseif($fileType =='sys'&&$objType =='tools'){    
293         $pathDir .= $fileType.'/'.$objType.'/';
294     }elseif($fileType =='space'){                    
295         $pathDir .= $fileType.'/';
296     }else{
297         $pathDir .= UPLOAD_RULE;
298     }
299     return $pathDir;
300 }