2026-04-03 12:55:05 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Helpers;
|
|
|
|
|
|
|
|
|
|
use App\Http\Router;
|
|
|
|
|
use App\Kernel;
|
|
|
|
|
|
|
|
|
|
class UploadFiles {
|
|
|
|
|
|
2026-04-07 12:10:39 +02:00
|
|
|
const array IMAGE_MIME_TYPES = [ 'image/png', 'image/jpeg' ];
|
|
|
|
|
|
2026-04-03 12:55:05 +02:00
|
|
|
public static function uploadFolderPath(){
|
|
|
|
|
return APP_ROOT . 'public/uploads/';
|
|
|
|
|
}
|
|
|
|
|
public static function uploadFolderUri(){
|
|
|
|
|
return Kernel::$configs['general']['website_url'] . 'uploads/';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param string $fileName
|
2026-04-07 12:10:39 +02:00
|
|
|
* @param array $allowedMimeTypes Les mimes types autorisés pour ce fichier. Une liste vide n'a pas de restriction de mime type.
|
2026-04-03 12:55:05 +02:00
|
|
|
*
|
|
|
|
|
* @return string|int
|
|
|
|
|
*
|
|
|
|
|
* 1: Pas de fichier $fileArg
|
|
|
|
|
* 2: Erreur dans le fichier
|
|
|
|
|
* 3: Déjà existant.
|
|
|
|
|
* 4: Erreur dans le déplacement.
|
2026-04-07 12:10:39 +02:00
|
|
|
* 5: Erreur dans le mimetype.
|
2026-04-03 12:55:05 +02:00
|
|
|
*/
|
2026-04-07 12:10:39 +02:00
|
|
|
public static function uploadFile( string $fileArg, array $allowedMimeTypes = [] ): string|int {
|
2026-04-03 12:55:05 +02:00
|
|
|
|
|
|
|
|
if( !isset( $_FILES[ $fileArg ] ) )
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
|
|
$file = $_FILES[ $fileArg ];
|
|
|
|
|
if( $file['error'] != 0 )
|
|
|
|
|
return 2;
|
|
|
|
|
|
|
|
|
|
$tempFileName = $file['tmp_name'];
|
|
|
|
|
$fileName = $file['name'];
|
|
|
|
|
|
2026-04-07 12:10:39 +02:00
|
|
|
if( $allowedMimeTypes !== [] ){
|
|
|
|
|
if( !in_array( $file['type'], $allowedMimeTypes ) )
|
|
|
|
|
return 5;
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-03 12:55:05 +02:00
|
|
|
$full_name = self::uploadFolderPath() . $fileName;
|
|
|
|
|
$full_uri = self::uploadFolderUri() . $fileName;
|
|
|
|
|
|
|
|
|
|
if( file_exists( $full_name ) )
|
|
|
|
|
return 3;
|
|
|
|
|
|
|
|
|
|
if( !move_uploaded_file($tempFileName, $full_name) )
|
|
|
|
|
return 4;
|
|
|
|
|
|
|
|
|
|
return $full_uri;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|