126 lines
3.9 KiB
PHP
126 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V2;
|
|
|
|
use App\Http\Resources\V2\UploadedFileCollection;
|
|
use App\Models\Upload;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\File;
|
|
use Storage;
|
|
class FileController extends Controller
|
|
{
|
|
public function index(){
|
|
$all_uploads = (auth()->user()->user_type == 'seller') ? Upload::where('user_id',auth()->user()->id) : Upload::query();
|
|
|
|
|
|
$all_uploads = $all_uploads->paginate(20)->appends(request()->query());
|
|
|
|
return new UploadedFileCollection($all_uploads);
|
|
|
|
}
|
|
|
|
// any base 64 image through uploader
|
|
public function imageUpload(Request $request)
|
|
{
|
|
|
|
$type = array(
|
|
"jpg" => "image",
|
|
"jpeg" => "image",
|
|
"png" => "image",
|
|
"svg" => "image",
|
|
"webp" => "image",
|
|
"gif" => "image",
|
|
);
|
|
|
|
try {
|
|
$image = $request->image;
|
|
$request->filename;
|
|
$realImage = base64_decode($image);
|
|
|
|
$dir = public_path('uploads/all');
|
|
$full_path = "$dir/$request->filename";
|
|
|
|
$file_put = file_put_contents($full_path, $realImage); // int or false
|
|
|
|
if ($file_put == false) {
|
|
return response()->json([
|
|
'result' => false,
|
|
'message' => translate("File uploading error"),
|
|
'path' => "",
|
|
'upload_id' => 0
|
|
]);
|
|
}
|
|
|
|
|
|
$upload = new Upload;
|
|
$extension = strtolower(File::extension($full_path));
|
|
$size = File::size($full_path);
|
|
|
|
if (!isset($type[$extension])) {
|
|
unlink($full_path);
|
|
return response()->json([
|
|
'result' => false,
|
|
'message' => translate("Only image can be uploaded"),
|
|
'path' => "",
|
|
'upload_id' => 0
|
|
]);
|
|
}
|
|
|
|
|
|
$upload->file_original_name = null;
|
|
$arr = explode('.', File::name($full_path));
|
|
for ($i = 0; $i < count($arr) - 1; $i++) {
|
|
if ($i == 0) {
|
|
$upload->file_original_name .= $arr[$i];
|
|
} else {
|
|
$upload->file_original_name .= "." . $arr[$i];
|
|
}
|
|
}
|
|
|
|
//unlink and upload again with new name
|
|
unlink($full_path);
|
|
$newFileName = rand(10000000000, 9999999999) . date("YmdHis") . "." . $extension;
|
|
$newFullPath = "$dir/$newFileName";
|
|
|
|
$file_put = file_put_contents($newFullPath, $realImage);
|
|
|
|
if ($file_put == false) {
|
|
return response()->json([
|
|
'result' => false,
|
|
'message' => translate("Uploading error"),
|
|
'path' => "",
|
|
'upload_id' => 0
|
|
]);
|
|
}
|
|
|
|
$newPath = "uploads/all/$newFileName";
|
|
|
|
if (env('FILESYSTEM_DRIVER') == 's3') {
|
|
Storage::disk('s3')->put($newPath, file_get_contents(base_path('public/') . $newPath));
|
|
unlink(base_path('public/') . $newPath);
|
|
}
|
|
|
|
$upload->extension = $extension;
|
|
$upload->file_name = $newPath;
|
|
$upload->user_id = auth()->user()->id;
|
|
$upload->type = $type[$upload->extension];
|
|
$upload->file_size = $size;
|
|
$upload->save();
|
|
|
|
return response()->json([
|
|
'result' => true,
|
|
'message' => translate("Image updated"),
|
|
'path' => uploaded_asset($upload->id),
|
|
'upload_id' => $upload->id
|
|
]);
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'result' => false,
|
|
'message' => $e->getMessage(),
|
|
'path' => "",
|
|
'upload_id' => 0
|
|
]);
|
|
}
|
|
}
|
|
}
|