Questo sito o gli strumenti terzi da questo utilizzati si avvalgono di cookie necessari al funzionamento ed utili alle finalità illustrate nella cookie policy. Se vuoi saperne di più o negare il consenso a tutti i cookie, consulta la cookie policy. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.

Accetto Cookie Policy
X
Website Logo
IT | EN
Consorzio del Vino Nobile di Montepulciano
I Soci imbottigliatori
Avignonesi

Upload d'un fichier vers le serveur

Pour r?aliser l'Upload d'un fichier de votre ordinateur (poste client) vers un serveur vous devez utiliser un formulaire avec une m?thode sp?ciale.

par exemple vous devrez ?crire:

<form action="" name="form_upload" id="form_upload" method="post" enctype="multipart/form-data">

Votre formulaire devra donc ?tre de m?thode "post" et surtout avec l'enctype "multipart/form-data"

C'est cette derni?re qui lors de la validation, soumission du formulaire assurera le transfert de votre fichier vers le serveur.

Dans un premier temps cette m?thode transf?re un fichier temporaire sur le serveur selon un emplacement temporaire lui aussi d?finit par les param?tres du serveur.

Si vous souhaitez conserver ce fichier il vous faudra alors le d?placer ? un autre emplacement sur le serveur.

En effet le fichier temporaire ainsi upload? sera supprim? d?s la fin de votre script!

Quoiqu'il en soit vous venez ? ce stade de upload? un fichier certe temporaire vers le serveur.

D?placer un fichier temporaire vers un emplacement stable sur le serveur

Si vous souhaitez conserver votre fichier sur le serveur vous devez donc d?placer le fichier temporaire upload? vers un autre emplacement sur le serveur.

Bien entendu cela suppose que vous avez les droits d'?criture sur cet emplacement sur le serveur, ce qui est g?n?ralement le cas si l'emplacement serveur est votre propre site web, ou encore si l'auteur du site vous autorise cette ?criture.

Pour d?placer le fichier temporaire sur le serveur nous aurons besoin de conna?tre son emplacement et son nom sur le serveur.

Ceci nous est fourni en php grace au code suivant:

$kontrol_file = $_FILES['fichiercsv']; //controle file dans le formulaire - fichiercsv est le nom (name) du contr?le input type file dans le formulaire qui nous permet de choisir le fichier sur l'ordinateur client

        $tmp_file = $kontrol_file['tmp_name']; //nom du fichier temporaire qui sera t?l?charg?

        $type_file = $kontrol_file['type']; // extension, type du fichier ? t?l?charger

        $name_file = $kontrol_file['name']; //nom du fichier ? t?l?charger dans le syst?me client

        $size_file = $kontrol_file['size']; //taille du fichier ? t?l?charger

        $error_file = $kontrol_file['error']; //une erreur est elle survenue - pas d'erreur si 0

Avec ceci nous connaissons le nom et l'emplacement du fichier temporaire upload? sur le serveur ['tmp_name']

Nous connaissons ?galement le nom du fichier s?lectionn? sur le syst?me client (seulement son nom et son extension, mais pas son chemin - pour raison dite de s?curit? du syst?me client!) ['name']

Nous pouvons ?galement savoir si une erreur s'est produite lors de la tentaive d'upload du fichier temporaire ['error'] - si 0 aucune erreur lors de l'upload

['type'] fourni davantage l'appartenance du fichier client que son extension, ainsi nous serons si un fichier est li? ? excel mais pas son extension

['size'] donne la taille du fichier vu du client

l'upload est limit? en taille par le serveur, vous serez oblig? de vous adapter ? cette taille sauf si vous ?tes administrateur du serveur - modification du param?trage du serveur n?cessaire

Pour d?placer le fichier temporaire nous aurons ?galement besoin de conna?tre l'emplacement o? nous allons le placer sur le serveur.

En fait le d?placement se fait de la zone temporaire vers un emplacement connu sur le serveur.

Pour cela il vous faudra donc indiquer un emplacement sur le serveur o? transf?r? votre fichier.

Dans notre cas cet emplacement sera celui contenant le script autorisant ce transfert.

La page php contenant se script de transfert sra appel?e page courante.

Dans notre cas le fichier temporaire sera donc d?plac? dans le m?me dossier que celui de la page courante.

Vous pouvez bien entendu choisir un autre endroit sur le serveur si ce dernier est valide.

Pour cela nous utilisrons 2 instructions:

  • $_SERVER['DOCUMENT_ROOT'] qui donne l'emplacement de la racine de votre site exprim?e dans le syst?me de fichier de votre serveur (Unix)
  • $_SERVER['SCRIPT_NAME']; //chemin de la page courante y compris son nom et son extension

Avec ceci nous avons tout ce qui nous faut pour r?aliser notre transfert et ainsi concerver le fichier sur le serveur, m?me apr?s la fin de notre script.

Passons maintenant ? un petit essai!

Un exemple d'upload

Choix du fichier :

Code de cette page

<?php

function curPageName() { //nom de la page courante

        return substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1);

}

 

function curPageURL() { //URL de la page courante

         $URL_page = 'http';

         if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$URL_page .= "s";}

         $URL_page .= "://";

         if ($_SERVER["SERVER_PORT"] != "80") {

          $URL_page .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];

         } else {

          $URL_page .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];

         }

         return $URL_page;

}

 

function move_upload($Kontrol_file, $dossier_courant){ //transfert d'un fichier upload? dans le dossier courant - dossier contenant la page du script de l'upload

        /* ------------------

        $kontrol_file = $_FILES['fichiercsv']; //controle file dans le formulaire

        $tmp_file = $kontrol_file['tmp_name']; //nom du fichier temporaire qui sera t?l?charg?

        $type_file = $kontrol_file['type']; // extension du fichier ? t?l?charge

        $name_file = $kontrol_file['name']; //nom du fichier ? t?l?charger du syst?me client

        $size_file = $kontrol_file['size']; //taille du fichier ? t?l?charger

        $error_file = $kontrol_file['error']; //une erreur est elle survenue - pas d'erreur si 0

        

        echo "tmp_file:  $tmp_file </br>";

        echo "type_file:  $type_file </br>";

        echo "name_file:  $name_file </br>";

        echo "size_file:  $size_file </br>";

        echo "error_file:  $error_file </br>";

        

        v?rifie que le fichier temporaire est bien ?t? t?l?charg? - formulaire de type:  method="post" enctype="multipart/form-data"

        calcule l'emplacement du futur fichier dans le syst?me de fichier du serveur - m?me emplacement que le fichier courant

        Si transfert r?ussit vers emplacement courant, fourni l'adresse type URL du fichier t?l?charg?

        retourne l'emplacement du fichier sur le serveur dans son syst?me de fichier (Unix...)

        -------------- */

        if ($Kontrol_file["error"] == UPLOAD_ERR_OK) { //UPLOAD_ERR_OK = 0 - pas d'erreur lors du uploadage temporaire du fichier

                $uploads_dir = $_SERVER['DOCUMENT_ROOT'].$dossier_courant;

                $tmp_name = $Kontrol_file["tmp_name"];

                $name = $Kontrol_file["name"];

                $final_name = "$uploads_dir$name"; //chemin complet de la page sur le serveur exprim? dans le syst?me de fichier du serveur (ex sous Unix)

                $reponse = move_uploaded_file($tmp_name, $final_name); //d?placement du fichier temporaire dans le dossier courant

                if ($reponse) { //transfert r?ussi! nous fournissons le lien HTTP:// du fichier sur le serveur

                        $lien = 'http'; //lien du fichier transf?r? sur le serveur - adresse type URL

                        if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {$lien .= "s";}

                        $lien .= "://";

                        if ($_SERVER["SERVER_PORT"] != "80") {

                                $lien .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$dossier_courant.$name;

                        } else {

                                $lien .= $_SERVER["SERVER_NAME"].$dossier_courant.$name;

                        }

                        echo "<p>Le fichier <span style='color:#00f'><strong> <a href='$lien' target='_blank'>$name</a></strong></span> a bien ?t? upload?</p>";

                        return "$uploads_dir$name"; //retourne la position du fichier dans le syst?me de fichier du serveur (ex Unix...)

                }

        }

}

?>

 

<html>

<head>

<title>Upload de fichier - transfert de fichier vers le serveur</title>

<meta name="generator" content="Namo WebEditor v5.0">

<meta name="generator2" content="jedit">

<link rel="stylesheet" href="../style.css">

</head>

<body>

<form action="" name="form_upload" id="form_upload" method="post" enctype="multipart/form-data">

 

<p style="color:#00f;font-weight:bold">Choix du fichier : </p>

<p><input type="file" name="fichiercsv" id="idfichiercsv" size="26" >

 

<input type="submit" value="Upload file to server">

</form>

 

<?php

if (isset($_FILES['fichiercsv'])){ //teste si le formulaire peut t?l?charger un fichier

        $kontrol_file = $_FILES['fichiercsv'];

        $page_courante = curPageName(); //nom de la page courante avec son extension

        $script_name = $_SERVER['SCRIPT_NAME']; //chemin de la page courante y compris son nom et son extension

        $dossier_courant = substr($script_name, 0, - strlen($page_courante));  // retourne le dossier contenant la page courante

        

        $extensions_valides = array( 'csv' , 'txt', 'html','php','js','gif', 'jpg', 'avi', 'flv', 'mp3', 'xls', 'doc' );

        $name_file = $kontrol_file['name']; //nom du fichier ? t?l?charger du syst?me client

        $extension_upload = substr(strrchr($name_file, '.')  ,1); //extension du fichier ? t?l?charger

        if (in_array($extension_upload,$extensions_valides) ){ //v?rification de l'extension de fichier ? t?l?charger

                $destination = move_upload($kontrol_file, $dossier_courant); //appelle la fonction pour d?placer le fichier

        } else {

                echo "L'extension du fichier s?lectionn? n'est en principe pas accept?e, nous allons toutefois l'Upload? si possible! \n </br>";

                $destination = move_upload($kontrol_file, $dossier_courant); //appelle la fonction pour d?placer le fichier

        }

}

?>

 

</body>

</html>

Localizzazione