-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathfiles_save.php
More file actions
54 lines (42 loc) · 1.58 KB
/
Copy pathfiles_save.php
File metadata and controls
54 lines (42 loc) · 1.58 KB
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
<?php
function generateUUID(){
$data = random_bytes(16);
$data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
$data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10
return bin2hex($data);
}
function saveFile() : string | null
{
// Retourne le nom du fichier si l'enregistrement a réussi, faux sinon.
$name = generateUUID() . '.' . pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (move_uploaded_file($_FILES['file']['tmp_name'], __DIR__ . '/api/files/' . $name)) {
return $name;
}
return null;
}
function saveImage() : string | null
{
// Vérification des données de l'image, puis enregistrement.
// Retourne Faux si l'image n'en est pas une, ou si elle n'a pas pu être enregistrée.
if (!isset($_FILES['file']) || $_FILES['file']['tmp_name'] === '') {
return null;
}
// Vérifie le type MIME avec finfo
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES['file']['tmp_name']);
$allowedTypes = ['image/jpeg', 'image/png', 'image/webp'];
if (!in_array($mimeType, $allowedTypes)) {
return null;
}
// On s'assure que l'extension du fichier ne causerait pas de problèmes
return saveFile();
}
function deleteFile(string $fileName) : bool
{
if (file_exists(__DIR__ . "/api/files/" . $fileName)) {
unlink(__DIR__ . "/api/files/" . $fileName);
return true;
}
return false;
}
?>