diff --git a/app/Traits/UploadTrait.php b/app/Traits/UploadTrait.php index c94856b..f60d603 100644 --- a/app/Traits/UploadTrait.php +++ b/app/Traits/UploadTrait.php @@ -2,10 +2,10 @@ namespace App\Traits; -use Illuminate\Support\Arr; -use Illuminate\Support\Facades\Storage; -use Illuminate\Support\Str; use Slowlyo\OwlAdmin\Admin; +use Illuminate\Support\Arr; +use Illuminate\Support\Str; +use Illuminate\Support\Facades\Storage; trait UploadTrait { @@ -25,17 +25,17 @@ trait UploadTrait public function uploadRich() { $fromWangEditor = false; - $file = request()->file('file'); + $file = request()->file('file'); - if (! $file) { + if (!$file) { $fromWangEditor = true; - $file = request()->file('wangeditor-uploaded-image'); - if (! $file) { + $file = request()->file('wangeditor-uploaded-image'); + if (!$file) { $file = request()->file('wangeditor-uploaded-video'); } } - if (! $file) { + if (!$file) { return $this->response()->additional(['errno' => 1])->fail(__('admin.upload_file_error')); } @@ -57,7 +57,7 @@ trait UploadTrait { $file = request()->file('file'); - if (! $file) { + if (!$file) { return $this->response()->fail(__('admin.upload_file_error')); } @@ -69,63 +69,71 @@ trait UploadTrait return $this->response()->success(['value' => $path]); } - public function saveImage($field, $path) + public function saveImage($field = 'image', $path) { - return $this->saveFile($field, $path); + return $this->saveFile($field, $path); } /** * 表单提交时,转存实际目录,并保留上传时文件名称;文件保存全路径 */ - public function saveFile($field, $path) + public function saveFile($field = 'file', $path) { $file = request()->file($field); - - if (! $file) { - $file = request()->get($field); + + if (!$file) { + $file = request()->get($field); } $fileArr = []; //判断是否多个文件; - if (is_string($file) || isset($file['id'])) { + if(is_string($file) || isset($file['id'])){ $files = [$file]; - } else { + }else{ $files = $file; } - if ($files) { - foreach ($files as $file) { - if (is_array($file) && isset($file['state'])) { - switch ($file['state']) { + if($files){ + foreach($files as $file){ + if(is_array($file) && isset($file['state'])){ + switch($file['state']){ case 'init': - if (strpos($file['value'], 'temporary') !== false) { + if(strpos($file['value'], 'temporary') !== false){ $filePath = $path.'/'.$file['name']; - Storage::disk(Admin::config('admin.upload.disk'))->move($file['value'], $filePath); - $fileArr[] = Storage::disk(Admin::config('admin.upload.disk'))->url($filePath); - } else { + $res = Storage::disk(Admin::config('admin.upload.disk'))->move($file['value'], $filePath); + if($res){ + $fileArr[] = Storage::disk(Admin::config('admin.upload.disk'))->url($filePath); + }else{ + return response()->fail(__('admin.upload_file_error')); + } + }else{ $fileArr[] = $file['value']; } break; case 'uploaded': - if (isset($file['name'])) { + if(isset($file['name'])){ $filePath = $path.'/'.$file['name']; - if (Str::startsWith($file['value'], ['http://', 'https://'])) { + if(Str::startsWith($file['value'], ['http://', 'https://'])){ $fileUrl = parse_url($file['value']); - $fileValue = ltrim($fileUrl['path'], '/'); - } else { + $fileValue = ltrim($fileUrl['path'], '/storage'); + }else{ $fileValue = $file['value']; } - Storage::disk(Admin::config('admin.upload.disk'))->move($file['value'], $filePath); - $fileArr[] = Storage::disk(Admin::config('admin.upload.disk'))->url($filePath); + $res = Storage::disk(Admin::config('admin.upload.disk'))->move($fileValue, $filePath); + + if($res){ + $fileArr[] = Storage::disk(Admin::config('admin.upload.disk'))->url($filePath); + }else{ + return $this->response()->fail(__('admin.upload_file_error')); + } } break; } - } else { + }else{ $fileArr[] = $file; } } } - return $fileArr; } @@ -139,8 +147,8 @@ trait UploadTrait $uploadId = md5(time().$fileName); //创建临时文件夹 - if (Storage::disk(Admin::config('admin.upload.disk'))->exists(Admin::config('admin.upload.tem_directory.'.$type).'/'.$uploadId) === false) { - if (Storage::disk(Admin::config('admin.upload.disk'))->makeDirectory(Admin::config('admin.upload.tem_directory.'.$type).'/'.$uploadId) === false) { + if ( Storage::disk(Admin::config('admin.upload.disk'))->exists(Admin::config('admin.upload.tem_directory.' . $type).'/'.$uploadId) === false ) { + if ( Storage::disk(Admin::config('admin.upload.disk'))->makeDirectory(Admin::config('admin.upload.tem_directory.' . $type).'/'.$uploadId) === false ) { return false; } } @@ -159,19 +167,18 @@ trait UploadTrait $uploadId = request()->get('uploadId'); $partNumber = request()->get('partNumber'); $partSize = request()->get('partSize'); - // dd($file); $fileName = $file->getClientOriginalName(); + $fileName = str_replace(' ', '', $fileName);//去掉空格 //判断该分片是否已存在, - $dirPath = Admin::config('admin.upload.tem_directory.'.$type).'/'.$uploadId; - if (Storage::disk(Admin::config('admin.upload.disk'))->exists($dirPath.'/'.$fileName.'_'.$partNumber)) { + $dirPath = Admin::config('admin.upload.tem_directory.' . $type).'/'.$uploadId; + if(Storage::disk(Admin::config('admin.upload.disk'))->exists($dirPath . '/'.$fileName.'_'.$partNumber)){ return $this->response()->fail(__('admin.upload_file_error')); - } else { + }else{ //验证分片大小-todo $path = $file->storeAs($dirPath, $fileName.'_'.$partNumber, Admin::config('admin.upload.disk')); $realPath = Storage::disk(Admin::config('admin.upload.disk'))->url($path); $eTag = md5_file($realPath); - return $this->response()->success(['eTag' => $eTag]); } } @@ -184,32 +191,33 @@ trait UploadTrait $type = 'file'; //合并文件 $fileName = request()->get('filename', ''); + $fileName = str_replace(' ', '', $fileName); $uploadId = request()->get('uploadId', ''); $partList = request()->get('partList', []); - $basePath = Admin::config('admin.upload.tem_directory.'.$type).'/'.$uploadId; + $basePath = Admin::config('admin.upload.tem_directory.' . $type).'/'.$uploadId; $realPath = 'chunk/'.$fileName; //获取分片列表中序号,查看分片是否都完成上传 $partNumberList = Arr::pluck($partList, 'partNumber'); - if (max($partNumberList) === count($partNumberList)) { - //判断是否已存在同名文件,进行删除 - if (Storage::disk(Admin::config('admin.upload.disk'))->exists($realPath)) { + if(max($partNumberList) === count($partNumberList)){ + //判断是否已存在同名文件,进行重命名 + if(Storage::disk(Admin::config('admin.upload.disk'))->exists($realPath)){ $realPath = 'chunk/(1)'.$fileName; } - for ($i = 1; $i <= count($partNumberList); $i++) { + for($i = 1; $i<= count($partNumberList); $i++){ $_file = Storage::disk(Admin::config('admin.upload.disk'))->get($basePath.'/'.$fileName.'_'.$i); - Storage::disk(Admin::config('admin.upload.disk'))->append($realPath, $_file, null); + $res = Storage::disk(Admin::config('admin.upload.disk'))->append($realPath, $_file, null); } //删除分片文件夹 Storage::disk(Admin::config('admin.upload.disk'))->deleteDirectory($basePath); $value = Storage::disk(Admin::config('admin.upload.disk'))->url($realPath); - return $this->response()->success(['value' => $value]); - } else { + return $this->response()->success(['value'=>$value]); + }else{ return $this->response()->fail(__('admin.upload_file_error')); } } -} +} \ No newline at end of file