<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>Archives des move_uploaded_file - La programmation sur le web</title>
	<atom:link href="https://programmation.surleweb-france.fr/tag/move_uploaded_file/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmation.surleweb-france.fr/tag/move_uploaded_file/</link>
	<description>La programmation gratuite pour tous</description>
	<lastBuildDate>Thu, 27 May 2021 07:27:21 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2023/08/cropped-19518430-icone-de-programmation-pour-votre-site-web-mobile-presentation-et-conception-de-logo-gratuit-vectoriel.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Archives des move_uploaded_file - La programmation sur le web</title>
	<link>https://programmation.surleweb-france.fr/tag/move_uploaded_file/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">176210735</site>	<item>
		<title>PHP, créer un système d&#8217;upload de fichier</title>
		<link>https://programmation.surleweb-france.fr/php-creer-un-systeme-dupload-de-fichier/</link>
					<comments>https://programmation.surleweb-france.fr/php-creer-un-systeme-dupload-de-fichier/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Fri, 28 May 2021 06:00:00 +0000</pubDate>
				<category><![CDATA[Développement Web]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[move_uploaded_file]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[upload]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=1019</guid>

					<description><![CDATA[<p>Création d'un système d'upload de fichier simple en langage PHP à partir d'une page HTML</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/php-creer-un-systeme-dupload-de-fichier/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/php-creer-un-systeme-dupload-de-fichier/">PHP, créer un système d&rsquo;upload de fichier</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Parce qu&rsquo;on peut avoir besoin de charger une fichier comme une image pour un avatar, l&rsquo;upload de fichier est quasi-incontournable. En langage PHP, cela se fait très rapidement et surtout facilement.</p>



<p>Je vais te montrer cela en illustrant ave un petit exemple simple et les vérifications élémentaires.</p>



<p>Tu peux trouver sur <a href="https://github.com/zigomato/ArticlePHP/tree/main/UploadFichier" target="_blank" rel="noreferrer noopener">mon dépôt GITHUB</a>, les deux fichiers php de cet article. Je n&rsquo;y ai pas mis les images.</p>



<h2 class="wp-block-heading">Création du formulaire</h2>



<p>Pour la réalisation de cet article, à la racine de ton site d&rsquo;exemple, tu placeras le fichier<strong><em> index.php</em></strong> ainsi que le fichier <strong><em>upload.php</em></strong>, tu créeras également un dossier <strong><em>files </em></strong>où les fichiers seront uploadés.</p>



<p>La construction du fichier <strong><em>index.php</em></strong> se fait de cette manière :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!doctype html>
&lt;html lang="fr">
	&lt;header>
		&lt;meta charset="utf-8">
		&lt;title>Système d'upload de fichiers&lt;/title>
	&lt;/header>
	&lt;body>
		&lt;h1>Système d'upload de fichier&lt;/h1>
		&lt;form action="upload.php" method="POST" enctype="multipart/form-data">
			&lt;input type="text" name="nom" id="id" placeholder="Nom du fichier" />
			&lt;input type="file" name="fichier" placeholder="Fichier" />
			&lt;input type="submit" name="envoyer" value="Envoyer le fichier" />
		&lt;/form>
	&lt;/body>
&lt;/html></pre>



<p>On y retrouve un formulaire standard avec ses inputs :</p>



<ul class="wp-block-list"><li><strong><em>text </em></strong>pour le nom du fichier</li><li><strong><em>file </em></strong>pour le fichier à uploader</li><li><strong><em>submit </em></strong>pour le bouton</li></ul>



<p>A la validation du formulaire, les données sont envoyées avec la méthode<a href="https://programmation.surleweb-france.fr/php-la-transmission-de-donnees/" target="_blank" rel="noreferrer noopener"> POST</a> vers la page <strong><em>upload.php</em></strong>. </p>



<p><strong>Le point important </strong>ici est l&rsquo;ajout de l&rsquo;attribut <strong><em>enctype</em></strong>, sans lui, le fichier ne sera pas transmis :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">enctype="multipart/form-data"</pre>



<h2 class="wp-block-heading">Traitement PHP du fichier</h2>



<p>Maintenant que nous avons notre zone de saisie, nous allons voir la page <strong><em>upload.php</em></strong> qui permet de traiter le formulaire.</p>



<p>Tout d&rsquo;abord, on va s&rsquo;assurer que la page est bien appelée depuis le formulaire et que le champ <strong><em>nom </em></strong>et le <strong><em>fichier </em></strong>sont bien choisis, on en profite pour gérer les erreurs :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">if( isset($_POST['envoyer']) ){ // permet de s'assurer que le formulaire est bien à l'origine
	if( !empty($_POST['nom']) &amp;&amp; !empty($_FILES['fichier']) ){ // contrôle de la présence du fichier et du nom de fichier

	} else {
		header('location: index.php?type=error&amp;code=2');
	}
} else {
	header('location: index.php?type=error&amp;code=1');
}</pre>



<p>Une fois ces vérifications faites, on s&rsquo;assure qu&rsquo;il n&rsquo;y a pas d&rsquo;erreur sur le chargement du fichier :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">		if( $_FILES['fichier']['error'] === 0 ){ // contrôle de l'absence d'erreur du chargement de l'image depuis le formulaire

		} else {
			header('location: index.php?type=error&amp;code=3');
		}</pre>



<p>Avant d&rsquo;enregistrer, on va préparer un peu la manipulation :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">$uploadDirectory = __DIR__.DIRECTORY_SEPARATOR.'files'.DIRECTORY_SEPARATOR; // fichier d'upload
$fileInfo = new SplFileInfo($_FILES['fichier']['name']); // préparation du fichier pour upload
$extension = $fileInfo->getExtension();
$nouveauFichier = $_POST['nom'].'.'.$extension;</pre>



<p>On finit par déplacer le fichier en le renommant avec la fonction <a href="https://www.php.net/manual/fr/function.move-uploaded-file" target="_blank" rel="noreferrer noopener">move_uploaded_file()</a> et la redirection finale :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">move_uploaded_file($_FILES['fichier']['tmp_name'], $uploadDirectory.$nouveauFichier);
header('location: index.php?type=success');</pre>



<h2 class="wp-block-heading">Gestion des messages</h2>



<p>Dans le fichier précédent, nous avons fait des redirections en indiquant des informations, celles-là seront indiquer au rechargement de la page, nous allons donc ajouter au fichier <strong><em>index.php</em></strong>, ces informations :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;?php
if( !empty($_GET['type']) ){
	if( $_GET['type'] === 'success' ){
		$message = "Fichier enregistré avec succès";
	} elseif ( $_GET['type'] === 'error' &amp;&amp; !empty($_GET['code']) ){
		switch ($_GET['code']) {
			case 1:
				$message = "Accès non autorisé";
				break;
			case 2:
				$message = "Saisir le champs nom et sélectionné un fichier";
				break;
			case 3:
				$message = "Erreur lors du chargement du fichier";
				break;
		}
	}
}
?>
&lt;!doctype html>
&lt;html lang="fr">
	&lt;header>
		&lt;meta charset="utf-8">
		&lt;title>Système d'upload de fichiers&lt;/title>
	&lt;/header>
	&lt;body>
		&lt;h1>Système d'upload de fichier&lt;/h1>
		&lt;?php
		if( !empty($message) ) echo '&lt;p>'.$message.'&lt;/p>';
		?>
		&lt;form action="upload.php" method="POST" enctype="multipart/form-data">
			&lt;input type="text" name="nom" id="id" placeholder="Nom du fichier" />
			&lt;input type="file" name="fichier" placeholder="Fichier" />
			&lt;input type="submit" name="envoyer" value="Envoyer le fichier" />
		&lt;/form>
	&lt;/body>
&lt;/html></pre>



<p>On finit par ajouter l&rsquo;affichage des liens vers les images présentes dans le fichier, on place le code suivant juste avant la balise fermante <strong><em>body </em></strong>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">	&lt;?php
	$directory = opendir(__DIR__.DIRECTORY_SEPARATOR.'files/'); // ouverture du dossier
	echo '&lt;ul>';
	while( ($file = readdir($directory)) ){ // parcours du dossier
		if( $file !== '.' &amp;&amp; $file !== '..' ){
			echo '&lt;li>&lt;a href="./files/'.$file.'">'.$file.'&lt;/a>&lt;/li>';
		}
	}
	echo '&lt;/ul>';
	?></pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p>L&rsquo;ensemble des codes sont disponibles sur mon <a href="https://github.com/zigomato/ArticlePHP/tree/main/UploadFichier" target="_blank" rel="noreferrer noopener">dépôt</a>, bien sûr, il s&rsquo;agit d&rsquo;une version de base pour illustrer le fonctionnement, on imagine facilement ajouter un contrôle sur les extensions, la taille &#8230;</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/php-creer-un-systeme-dupload-de-fichier/">PHP, créer un système d&rsquo;upload de fichier</a> est apparu en premier sur <a href="https://programmation.surleweb-france.fr">La programmation sur le web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://programmation.surleweb-france.fr/php-creer-un-systeme-dupload-de-fichier/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1019</post-id>	</item>
	</channel>
</rss>
