Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
FileManagementController
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 2
20
0.00% covered (danger)
0.00%
0 / 1
 upload
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
6
 uploadBase64
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace App\Http\Controllers\v1;
4
5use App\Http\Controllers\Controller;
6use App\Http\Helpers\FileManagement\S3\DocumentManager;
7use App\Http\Helpers\FileManagement\S3\ImageManager;
8use Illuminate\Http\JsonResponse;
9use Illuminate\Http\Request;
10use Illuminate\Http\UploadedFile;
11use Illuminate\Support\Facades\Storage;
12
13class FileManagementController extends Controller
14{
15    public function upload(Request $request): JsonResponse
16    {
17        $data = $request->validate([
18            'file' => 'required|file',
19        ]);
20        $file = $data['file'];
21        $type = $file->getMimeType();
22        $type = explode('/', $type);
23
24        if ($type[0] == 'image') {
25            $obj = new ImageManager();
26            $result = $obj->upload($file);
27        } else {
28            $obj = new DocumentManager();
29            $result = $obj->upload($file);
30        }
31
32        return response()->json($result);
33    }
34
35    public function uploadBase64(Request $request): JsonResponse
36    {
37        $data = $request->validate([
38            'file' => 'required|string',
39            'extension' => 'required|string',
40        ]);
41
42        $fileData = $data['file'];
43        $fileExtension = $data['extension'];
44        $fileType = mime_content_type($fileData);
45        $fileName = 'TEMP'.strtoupper(uniqid(date('Ymd'))).'.'.$fileExtension;
46        $fileData = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $fileData));
47        Storage::disk('local')->put($fileName, $fileData);
48        $file = new UploadedFile(storage_path('app').'/'.$fileName, $fileName, $fileType);
49
50        $type = $file->getMimeType();
51        $type = explode('/', $type);
52
53        if ($type[0] == 'image') {
54            $obj = new ImageManager();
55            $result = $obj->upload($file, true, true);
56        } else {
57            $obj = new DocumentManager();
58            $result = $obj->upload($file);
59        }
60
61        Storage::disk('local')->delete($fileName);
62
63        return response()->json($result);
64    }
65}