|
|
@@ -0,0 +1,169 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Service;
|
|
|
+
|
|
|
+
|
|
|
+use Illuminate\Support\Facades\Storage;
|
|
|
+
|
|
|
+class FileUploadService extends Service
|
|
|
+{
|
|
|
+ //文件类型
|
|
|
+ const FILE_TYPE = [
|
|
|
+ 'txt',
|
|
|
+ 'jpg',
|
|
|
+ 'png',
|
|
|
+ 'gif',
|
|
|
+ 'jpeg',
|
|
|
+ 'zip',
|
|
|
+ 'rar',
|
|
|
+ 'xlsx',
|
|
|
+ 'xls',
|
|
|
+ ];
|
|
|
+
|
|
|
+ //视频类型
|
|
|
+ const VIDEO_FILE_TYPE = [
|
|
|
+ 'mp4',
|
|
|
+ ];
|
|
|
+
|
|
|
+ const tmp_dir = 'upload_occ';
|
|
|
+ const string = '/api/uploadFiles/';
|
|
|
+ const string2 = 'work_hour|';
|
|
|
+ const string3 = 'work_hour/';
|
|
|
+
|
|
|
+ public function uploadFile($file){
|
|
|
+ if(empty($file)) return [false, '请上传文件'];
|
|
|
+ // 获取文件相关信息
|
|
|
+ $ext = $file->getClientOriginalExtension(); // 扩展名
|
|
|
+ $realPath = $file->getRealPath(); //临时文件的绝对路径
|
|
|
+
|
|
|
+ $ext = strtolower($ext);
|
|
|
+ $file_type = array_merge_recursive(self::FILE_TYPE, self::VIDEO_FILE_TYPE);
|
|
|
+ if (! in_array($ext, $file_type)){
|
|
|
+ $str = '文件格式支持类型:';
|
|
|
+ foreach ($file_type as $value){
|
|
|
+ $str.= $value . ' ' ;
|
|
|
+ }
|
|
|
+ return [false, $str];
|
|
|
+ }
|
|
|
+
|
|
|
+ if (in_array($ext, self::VIDEO_FILE_TYPE)) {
|
|
|
+ $fileSize = $file->getSize(); // 获取文件大小(单位:字节)
|
|
|
+ $maxVideoSize = 50 * 1024 * 1024; // 50 MB
|
|
|
+ if ($fileSize > $maxVideoSize) {
|
|
|
+ return [false, '视频文件大小不能超过 50MB'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $date = date("Y-m-d");
|
|
|
+ //文件名
|
|
|
+ $file_name = date("Ymd").time().rand(1000,9999);
|
|
|
+ $filename = $file_name.'.' . $ext;
|
|
|
+
|
|
|
+ $dir = self::tmp_dir . '/' . $date . '/' . $filename;
|
|
|
+ Storage::disk('public')->put($dir, file_get_contents($realPath));
|
|
|
+
|
|
|
+ return [true, self::string . self::string2 . $filename];
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取文件的位置oss
|
|
|
+ public function getFileShow($file_name,$expired = 3500){
|
|
|
+ $path = "";
|
|
|
+ if(empty($file_name)) return $path;
|
|
|
+
|
|
|
+ $document = self::string3;
|
|
|
+ if(strpos($file_name, FileUploadService::string . FileUploadService::string2) !== false){
|
|
|
+ $file_name = str_replace(FileUploadService::string . FileUploadService::string2,'', $file_name);
|
|
|
+ $timestamp = substr($file_name, 0, 8); // 截取前八位数字
|
|
|
+ $date = \DateTime::createFromFormat('Ymd', $timestamp);
|
|
|
+ $date = $date->format('Y-m-d');
|
|
|
+ $savePath = $document . $date . '/' . $file_name;
|
|
|
+ list($status,$path) = (new OssService())->getTemporaryUrl($savePath,$expired);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $path;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function uploadFileLocal($file){
|
|
|
+ if(empty($file)) return [false, '请上传文件'];
|
|
|
+ // 获取文件相关信息
|
|
|
+ $ext = $file->getClientOriginalExtension(); // 扩展名
|
|
|
+ $realPath = $file->getRealPath(); //临时文件的绝对路径
|
|
|
+
|
|
|
+ $ext = strtolower($ext);
|
|
|
+ if (! in_array($ext, self::FILE_TYPE)){
|
|
|
+ $str = '文件格式为:';
|
|
|
+ foreach (self::FILE_TYPE as $value){
|
|
|
+ $str.= $value . ' ' ;
|
|
|
+ }
|
|
|
+ return [false,$str];
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上传文件
|
|
|
+ $file_name = date("Ymd").time().rand(1000,9999);
|
|
|
+ $filename = $file_name.'.' . $ext;
|
|
|
+ // 使用我们新建的uploads本地存储空间(目录)
|
|
|
+ Storage::disk('public')->put('upload_files/'.$filename, file_get_contents($realPath));
|
|
|
+
|
|
|
+ return [true, self::string . $filename];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function createOssUpload($file){
|
|
|
+ if(! is_array($file) || empty($file)) return;
|
|
|
+ foreach ($file as $filename){
|
|
|
+ $filename = str_replace(FileUploadService::string.FileUploadService::string2,'', $filename);
|
|
|
+ $timestamp = substr($filename, 0, 8); // 截取前八位数字
|
|
|
+ $date = \DateTime::createFromFormat('Ymd', $timestamp);
|
|
|
+ $date = $date->format('Y-m-d');
|
|
|
+ $dir = FileUploadService::tmp_dir . '/' . $date . '/' . $filename;
|
|
|
+ if(Storage::disk('public')->exists($dir)){
|
|
|
+ $realPath = storage_path() . "/app/public/" . $dir;
|
|
|
+ $savePath = self::string3 . $date . '/' . $filename;
|
|
|
+ list($status,$msg) = (new OssService())->uploadFile($realPath,$savePath);
|
|
|
+ if($status) Storage::disk('public')->delete($dir);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function createOssUploadOld($file){
|
|
|
+ if(! is_array($file) || empty($file)) return;
|
|
|
+
|
|
|
+ foreach ($file as $filename){
|
|
|
+ if(strpos($filename, FileUploadService::string.FileUploadService::string2) !== false){
|
|
|
+ $filename = str_replace(FileUploadService::string.FileUploadService::string2,'',$filename);
|
|
|
+ $timestamp = substr($filename, 0, 8); // 截取前八位数字
|
|
|
+ $date = \DateTime::createFromFormat('Ymd', $timestamp);
|
|
|
+ $date = $date->format('Y-m-d');
|
|
|
+ $delPath = self::string3 . $date . '/' . $filename;
|
|
|
+
|
|
|
+ list($status,$msg) = (new OssService())->deleteFile($delPath);
|
|
|
+// if(! $status) return [false , $msg];
|
|
|
+ }else{
|
|
|
+ if(strpos($filename, FileUploadService::string) !== false){
|
|
|
+ $filename = str_replace(FileUploadService::string,'',$filename);
|
|
|
+ $delPath = self::string3 . 'old/upload_files/' . $filename;
|
|
|
+ list($status,$msg) = (new OssService())->deleteFile($delPath);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function createOssUploadBatch($file){
|
|
|
+ if(empty($file['origin']) || empty($file['img_list'])) return;
|
|
|
+ $from = $file['origin'];
|
|
|
+ $filename = str_replace(FileUploadService::string.FileUploadService::string2,'', $from);
|
|
|
+ $timestamp = substr($filename, 0, 8); // 截取前八位数字
|
|
|
+ $date = \DateTime::createFromFormat('Ymd', $timestamp);
|
|
|
+ $date = $date->format('Y-m-d');
|
|
|
+ $dir = FileUploadService::tmp_dir . '/' . $date . '/' . $filename;
|
|
|
+ if(! Storage::disk('public')->exists($dir)) return;
|
|
|
+
|
|
|
+ $realPath = storage_path() . "/app/public/" . $dir;
|
|
|
+ foreach ($file['img_list'] as $filename){
|
|
|
+ $filename_tmp = str_replace(FileUploadService::string.FileUploadService::string2,'', $filename);
|
|
|
+ $savePath = self::string3 . $date . '/' . $filename_tmp;
|
|
|
+ list($status,$msg) = (new OssService())->uploadFile($realPath,$savePath);
|
|
|
+ }
|
|
|
+
|
|
|
+ Storage::disk('public')->delete($dir);
|
|
|
+ }
|
|
|
+}
|