Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
electronique:teleinformation-compteur-electricite:page_upload [2023/02/16 02:31] – Cédric ABONNEL | electronique:teleinformation-compteur-electricite:page_upload [2023/02/16 02:42] (Version actuelle) – Cédric ABONNEL | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Serveur Web - page upload ====== | ||
+ | {{ : | ||
+ | |||
+ | Pour créer une page PHP qui reçoit un fichier envoyé depuis un script Bash, nous pouvons utiliser la méthode HTTP POST. Voici un exemple de code qui vous aidera à démarrer : | ||
+ | |||
+ | <code PHP> | ||
+ | <?php | ||
+ | // Afficher les erreurs PHP | ||
+ | ini_set(' | ||
+ | ini_set(' | ||
+ | error_reporting(E_ALL); | ||
+ | |||
+ | $allowed_types = array(' | ||
+ | |||
+ | // Spécifiez le répertoire de destination | ||
+ | $target_dir = " | ||
+ | |||
+ | // Créer le répertoire de destination s'il n' | ||
+ | if (!file_exists($target_dir)) { | ||
+ | if (mkdir($target_dir, | ||
+ | echo "Le répertoire de destination a été créé avec succès.\n"; | ||
+ | } else { | ||
+ | echo " | ||
+ | exit(); | ||
+ | } | ||
+ | } | ||
+ | if (!isset($_FILES[' | ||
+ | echo "Aucun fichier présenté.\n"; | ||
+ | exit(); | ||
+ | } | ||
+ | |||
+ | if (in_array($_FILES[' | ||
+ | echo "Le type MIME du fichier n'est pas accepté.\n"; | ||
+ | exit(); | ||
+ | } | ||
+ | |||
+ | if ($_FILES[' | ||
+ | switch ($_FILES[' | ||
+ | case UPLOAD_ERR_INI_SIZE: | ||
+ | echo 'La taille du fichier dépasse la limite autorisée.\n'; | ||
+ | break; | ||
+ | case UPLOAD_ERR_FORM_SIZE: | ||
+ | echo 'La taille du fichier dépasse la limite autorisée par le formulaire.\n'; | ||
+ | break; | ||
+ | case UPLOAD_ERR_PARTIAL: | ||
+ | echo 'Le fichier n\'a été que partiellement téléchargé.\n'; | ||
+ | break; | ||
+ | case UPLOAD_ERR_NO_FILE: | ||
+ | echo 'Aucun fichier n\'a été téléchargé.\n'; | ||
+ | break; | ||
+ | case UPLOAD_ERR_NO_TMP_DIR: | ||
+ | echo 'Le dossier temporaire est manquant.\n'; | ||
+ | break; | ||
+ | case UPLOAD_ERR_CANT_WRITE: | ||
+ | echo ' | ||
+ | break; | ||
+ | case UPLOAD_ERR_EXTENSION: | ||
+ | echo 'Une extension PHP a empêché le téléchargement du fichier.\n'; | ||
+ | break; | ||
+ | default: | ||
+ | echo 'Une erreur s\'est produite lors du téléchargement du fichier.\n'; | ||
+ | } | ||
+ | echo " | ||
+ | exit(); | ||
+ | } | ||
+ | |||
+ | |||
+ | // Vérifie si le fichier a été correctement envoyé | ||
+ | if (isset($_FILES[' | ||
+ | // Spécifiez le chemin de destination pour enregistrer le fichier | ||
+ | $destination = $target_dir . '/' | ||
+ | |||
+ | // Si le fichier existe déjà, le supprimer | ||
+ | if (file_exists($destination)) { | ||
+ | unlink($destination); | ||
+ | } | ||
+ | |||
+ | // Déplacez le fichier du répertoire temporaire vers le répertoire de destination | ||
+ | if (move_uploaded_file($_FILES[' | ||
+ | if (file_exists($destination)) { | ||
+ | $crc = hash_file(' | ||
+ | echo $crc; | ||
+ | } else { | ||
+ | echo "Une erreur s'est produite lors du téléchargement du fichier.\n"; | ||
+ | exit; | ||
+ | } | ||
+ | } else { | ||
+ | echo "Une erreur s'est produite lors du téléchargement du fichier.\n"; | ||
+ | exit; | ||
+ | } | ||
+ | } else { | ||
+ | echo "Une erreur s'est produite lors de l' | ||
+ | } | ||
+ | ?> | ||
+ | |||
+ | </ | ||
+ | |||
+ | Le code ci-dessus vérifie si un fichier a été envoyé via la méthode POST et utilise la fonction PHP **move_uploaded_file** pour déplacer le fichier du répertoire temporaire vers un répertoire de destination sur votre serveur. | ||
+ | |||
+ | -- | ||
+ | |||
+ | La création du répertoire de destination '' | ||
+ | Sauf qu'il est peut-être nécessaire de créer ce dossier en ligne de commande dans le dossier public du site : '' | ||
+ | Le dossier '' | ||
+ | |||
+ | -- | ||
+ | |||
+ | Si le fichier de destination existe déjà avec la fonction **file_exists**, | ||
+ | |||
+ | -- | ||
+ | |||
+ | La fonction **is_dir** permet de vérifier si le répertoire de destination n' | ||
+ | |||
+ | Si le répertoire est créé avec succès, nous continuons avec la vérification et le traitement du fichier téléchargé, | ||
+ | |||
+ | -- | ||
+ | |||
+ | Nous avons utilisé une structure conditionnelle pour vérifier la valeur de '' | ||
+ | |||
+ | En utilisant ce code, nous pouvons afficher un message d' | ||
+ | |||
+ | |||
+ | -- | ||
+ | |||
+ | Un contrôle du CRC sur un fichier téléchargé et renvoyé. Nous utilisons la fonction **hash_file** pour calculer la valeur SHA1 du fichier. La fonction **hash_file** calcule le hash d'un fichier donné à l'aide de l' | ||
+ | |||
+ | -- | ||
+ | |||
+ | Nous devons également vérifier le paramétrage de PHP. | ||
+ | |||
+ | * La directive **post_max_size** est définie dans un fichier de configuration différent. Nous pouvons utiliser la fonction phpinfo pour vérifier le fichier de configuration utilisé par PHP. Cherchez la ligne " | ||
+ | La modification de la directive **post_max_size** nécessite un redémarrage du serveur web pour prendre effet. Assurez-vous que le serveur web a été redémarré après avoir modifié la valeur de **post_max_size** dans le fichier **php.ini**. | ||
+ | |||
+ | * Nous avons également modifié la directive '' | ||
+ | |||
+ | |||
+ | --- // | ||
+ | |||
+ | |||