wesley 6 роки тому
батько
коміт
21cce8105d
1 змінених файлів з 81 додано та 0 видалено
  1. 81 0
      app/Services/Base/Attachment.php

+ 81 - 0
app/Services/Base/Attachment.php

xqd
@@ -230,4 +230,85 @@ class Attachment
 
     }
 
+    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']){
+        $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');
+        $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) {
+            return $this->_jsonMessage(500,  ['message' => '没有文件被上传']);
+        }
+        if (!$file->isValid()) {
+            return $this->_jsonMessage(500,  ['message' => '不允许上传']);
+        }
+
+        $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' => '文件格式不被允许']);
+        }
+        $clientName = $file->getClientOriginalName();
+        $md5 = md5($clientName . time());
+        $md5_filename = $md5 . '.' . $file->getClientOriginalExtension();
+
+        if(isset($request['from']) && $request['from'] == 'crop') {
+            $clientName = isset($request['name']) ? $request['name'] : '裁剪.png';
+            $md5_filename = $md5_filename . 'png';
+        }
+
+        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;
+//            }
+
+            $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);
+                }
+            }
+
+            return $this->_jsonMessage(200,  ['message' => "上传成功", 'fileurl' => $url_path,'name'=>$md5_filename]);
+
+        } catch (FileException $e) {
+            return $this->_jsonMessage(500,  ['message' => '上传失败']);
+//            $result = ErrorCode::ATTACHMENT_MOVE_FAILED;
+        }
+    }
+
 }