60 lines
1.9 KiB
PHP
60 lines
1.9 KiB
PHP
|
<?php
|
||
|
|
||
|
try {
|
||
|
//Make sure a file has been submitted
|
||
|
if (!isset($_FILES['file'])) {
|
||
|
throw new Exception("Aucun fichier trouvé !");
|
||
|
}
|
||
|
$file = $_FILES['file'];
|
||
|
|
||
|
//File information and details
|
||
|
$filename = $file['name'];
|
||
|
$filetmp = $file['tmp_name'];
|
||
|
$filesize = $file['size'];
|
||
|
$error = $file['error'];
|
||
|
$maxsize = 104857600;
|
||
|
|
||
|
//Find file extension for whitelisting
|
||
|
$extension = explode('.', $filename);
|
||
|
$extension = strtolower(end($extension));
|
||
|
|
||
|
//List of allowed exstensions
|
||
|
$allowed = array('png', 'jpg', 'jpeg', 'gif', 'webm', 'mp4', 'wmv', 'mp3', 'flac', 'ogg', 'zip', 'css', 'pdf', 'zip', 'rar', 'm3u', 'm3u8', 'txt');
|
||
|
|
||
|
//Check if file is allowed
|
||
|
if(!in_array($extension, $allowed)) {
|
||
|
throw new Exception("Ce type de fichier n'est pas encore autorisé, désolé. Si vous pensez qu'il devrait l'être, merci de mentionner @Sangigi_Esenjin sur Twitter et je regarderais cela !");
|
||
|
}
|
||
|
|
||
|
//Check if there is an error
|
||
|
if($error !== 0) {
|
||
|
throw new Exception("Notre serveur a détecté un problème avec ce fichier. Essaie encore.");
|
||
|
}
|
||
|
|
||
|
//Make sure the filesize is ok
|
||
|
if($filesize > $maxsize) {
|
||
|
throw new Exception();
|
||
|
}
|
||
|
|
||
|
//Generate a file name, and regenerate it if a file with that name already exists
|
||
|
do {
|
||
|
$newname = strtoupper(substr(hash("sha256", $filename . (rand() * 100)), 0, 6)) . "." . $extension;
|
||
|
} while (file_exists("/file/" . $newname));
|
||
|
|
||
|
//Set file location
|
||
|
$location = 'file/' . $newname;
|
||
|
|
||
|
//Move file to storage folder
|
||
|
if(!move_uploaded_file($filetmp, $location)) {
|
||
|
throw new Exception("Impossible de déplacer le fichier dans le dossier où il devrait être. Vous devriez probablement parler de ce sujet à @Sangigi_Fuchsia sur twitter, car la faute provient probablement du serveur.");
|
||
|
}
|
||
|
|
||
|
if (!header('Location: share/' . $newname)) {
|
||
|
throw new Exception("Echec de la redirection.");
|
||
|
}
|
||
|
}
|
||
|
//Catch errors and output them
|
||
|
catch (Exception $e) {
|
||
|
echo $e->getMessage();
|
||
|
}
|