1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
<?php
// model/Image.php
class Image
{
private const MAX_WEIGHT = 2000000; // taille max des images (par défaut 2Mo dans php.ini)
private $page;
private $ajax = false;
private $erreur = '';
public function __construct($ajax)
{
// get envoyé avec le javascript
$this->page = $_GET['page'];
$this->ajax = $ajax;
}
// GET
public function getError()
{
return($this->erreur);
}
public function upload()
{
// traitement et enregistrement de l'image
if (isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok
{
if ($_FILES['upload']['size'] <= self::MAX_WEIGHT)
{
$infos = pathinfo($_FILES['upload']['name']);
$extension = $infos['extension'];
$extautorisées = array('jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff');
// on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur)
if (in_array($extension, $extautorisées))
{
move_uploaded_file($_FILES['upload']['tmp_name'], 'data/' . $this->page . '/images/' . $_FILES['upload']['name']);
chmod('data/' . $this->page . '/images/' . $_FILES['upload']['name'], 0666);
}
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é';}
}
else{$this->erreur = 'fichier trop lourd';}
}
else
{
$this->erreur = $_FILES['upload']['error'];
}
// retour des rêquetes AJAX
if($this->ajax)
{
// nouveau chemin à renvoyer en format json
$chemin = '{"url": "data/' . $this->page . '/images/' . $_FILES['upload']['name'] . '"}';
//echo json_encode($chemin);
echo $chemin;
}
}
}
|