1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- /**
- * Created by IntelliJ IDEA.
- * User: kelyliang
- * Date: 2024/7/2
- * Time: 下午 12:05
- */
- namespace App\Services\File\Upload;
- use App\Http\Resources\API\FileUploadSuccessResource;
- use App\Models\File;
- use Illuminate\Http\Request;
- use Illuminate\Http\UploadedFile;
- class CompanyUploadService
- {
- public function __construct(protected Request $request)
- {
- }
- public function upload(): array
- {
- $items = [];
- $fileNames = $this->request->get("file_names", []);
- $files=$this->request->file("files");
- if($files === null){
- return [];
- }
- foreach ($files as $index => $file) {
- $item = $this->uploadFile($this->request, $file);
- $item['file']['title'] = $fileNames[$index] ?? $item['file']['title'];
- $items[] = $item;
- }
- $uploadedFiles = $this->storeFiles($items);
- return $uploadedFiles;
- }
- protected function uploadFile(Request $request, UploadedFile $file): array
- {
- $extension = $file->getClientOriginalExtension() ? $file->getClientOriginalExtension(): pathinfo($file->getClientOriginalName(), PATHINFO_EXTENSION);
- $pathname = $file->storeAs(
- sprintf("c%s/%s/%s", uniqid(), $request->get("object_type"), date("Ymd")),
- sprintf("%s.%s", md5(uniqid()), $extension)
- );
- throw_validation_if(! $pathname, "File upload failed.");
- $data['file'] = [
- 'pathname' => $pathname,
- 'title' => $file->getClientOriginalName(),
- 'size' => $file->getSize(),
- 'extension' => $extension,
- 'company_id' => uniqid(),
- 'object_type' => $request->object_type,
- 'source' => $request->get("source", 1),
- ];
- return $data;
- }
- protected function storeFiles(array $items)
- {
- $uploadedFiles = [];
- foreach ($items as $item) {
- $fileInfo = $item['file'];
- $file = File::query()->create($fileInfo);
- $uploadedFiles[] = new FileUploadSuccessResource($file);
- }
- return $uploadedFiles;
- }
- }
|