diff options
| author | polo <ordipolo@gmx.fr> | 2021-09-08 02:09:34 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2021-09-08 02:09:34 +0200 |
| commit | cdf1bda847edd3e22e9fe817a802219ad8e0f626 (patch) | |
| tree | adbe2b35e9741a5db74491c85914f4c03d3d4c99 /model/Image.php | |
| parent | 9a552c6b751f25bac9e816cf605fb972da8b9e27 (diff) | |
| download | melaine-cdf1bda847edd3e22e9fe817a802219ad8e0f626.tar.gz melaine-cdf1bda847edd3e22e9fe817a802219ad8e0f626.tar.bz2 melaine-cdf1bda847edd3e22e9fe817a802219ad8e0f626.zip | |
vignette
Diffstat (limited to 'model/Image.php')
| -rw-r--r-- | model/Image.php | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/model/Image.php b/model/Image.php new file mode 100644 index 0000000..0070b70 --- /dev/null +++ b/model/Image.php | |||
| @@ -0,0 +1,59 @@ | |||
| 1 | <?php | ||
| 2 | // model/Image.php | ||
| 3 | |||
| 4 | class Image | ||
| 5 | { | ||
| 6 | private const MAX_WEIGHT = 2000000; // taille max des images (par défaut 2Mo dans php.ini) | ||
| 7 | private $page; | ||
| 8 | private $ajax = false; | ||
| 9 | private $erreur = ''; | ||
| 10 | |||
| 11 | public function __construct($ajax) | ||
| 12 | { | ||
| 13 | // get envoyé avec le javascript | ||
| 14 | $this->page = $_GET['page']; | ||
| 15 | $this->ajax = $ajax; | ||
| 16 | } | ||
| 17 | |||
| 18 | // GET | ||
| 19 | public function getError() | ||
| 20 | { | ||
| 21 | return($this->erreur); | ||
| 22 | } | ||
| 23 | |||
| 24 | public function upload() | ||
| 25 | { | ||
| 26 | |||
| 27 | // traitement et enregistrement de l'image | ||
| 28 | if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok | ||
| 29 | { | ||
| 30 | if ($_FILES['upload']['size'] <= self::MAX_WEIGHT) | ||
| 31 | { | ||
| 32 | $infos = pathinfo($_FILES['upload']['name']); | ||
| 33 | $extension = $infos['extension']; | ||
| 34 | $extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'); | ||
| 35 | // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur) | ||
| 36 | if (in_array($extension, $extautorisées)) | ||
| 37 | { | ||
| 38 | move_uploaded_file($_FILES['upload']['tmp_name'], 'data/' . $this->page . '/images/' . $_FILES['upload']['name']); | ||
| 39 | chmod('data/' . $this->page . '/images/' . $_FILES['upload']['name'], 0666); | ||
| 40 | } | ||
| 41 | else{$this->erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff<br />le format svg n\'est pas supporté';} | ||
| 42 | } | ||
| 43 | else{$this->erreur = 'fichier trop lourd';} | ||
| 44 | } | ||
| 45 | else | ||
| 46 | { | ||
| 47 | $this->erreur = $_FILES['upload']['error']; | ||
| 48 | } | ||
| 49 | |||
| 50 | // retour des rêquetes AJAX | ||
| 51 | if($this->ajax) | ||
| 52 | { | ||
| 53 | // nouveau chemin à renvoyer en format json | ||
| 54 | $chemin = '{"url": "data/' . $this->page . '/images/' . $_FILES['upload']['name'] . '"}'; | ||
| 55 | //echo json_encode($chemin); | ||
| 56 | echo $chemin; | ||
| 57 | } | ||
| 58 | } | ||
| 59 | } \ No newline at end of file | ||
