<?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 file - La programmation sur le web</title>
	<atom:link href="https://programmation.surleweb-france.fr/tag/file/feed/" rel="self" type="application/rss+xml" />
	<link>https://programmation.surleweb-france.fr/tag/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.9.4</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 file - La programmation sur le web</title>
	<link>https://programmation.surleweb-france.fr/tag/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>
		<item>
		<title>Les Add-on indispensables pour Home Assistant</title>
		<link>https://programmation.surleweb-france.fr/les-add-on-indispensables-pour-home-assistant/</link>
					<comments>https://programmation.surleweb-france.fr/les-add-on-indispensables-pour-home-assistant/#respond</comments>
		
		<dc:creator><![CDATA[Zigomato]]></dc:creator>
		<pubDate>Sun, 28 Mar 2021 18:50:47 +0000</pubDate>
				<category><![CDATA[Domotique]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[assistant]]></category>
		<category><![CDATA[dossier]]></category>
		<category><![CDATA[editeur]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[partage]]></category>
		<category><![CDATA[raspberry]]></category>
		<category><![CDATA[samba]]></category>
		<category><![CDATA[share]]></category>
		<guid isPermaLink="false">https://programmation.surleweb-france.fr/?p=858</guid>

					<description><![CDATA[<p>Tu viens de finir l'installation de l'OS Home Assistant sur ton Raspberry. L'interface est un peu vide, tu pourras la personnaliser. Mais avant de t'y mettre réellement, tu devras installer quelques Add-on utiles voire indispensables pour profiter pleinement de l'assistant domestique</p>
<p class="continue-reading-button"> <a class="continue-reading-link" href="https://programmation.surleweb-france.fr/les-add-on-indispensables-pour-home-assistant/">Continuer la lecture<i class="crycon-right-dir"></i></a></p>
<p>L’article <a href="https://programmation.surleweb-france.fr/les-add-on-indispensables-pour-home-assistant/">Les Add-on indispensables pour Home Assistant</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>Tu viens de finir l<a href="https://programmation.surleweb-france.fr/installer-home-assistant-sur-raspberry/" target="_blank" rel="noreferrer noopener">&lsquo;installation de l&rsquo;OS Home Assistant sur ton Raspberry</a> (je précise les cartes avec lesquelles, l&rsquo;article est réalisé). L&rsquo;interface est un peu vide, tu pourras la personnaliser. Mais avant de t&rsquo;y mettre réellement, tu devras installer quelques Add-on utiles voire indispensables pour profiter pleinement de l&rsquo;assistant domestique.</p>



<p>Dans cet article, on verra l&rsquo;installation et la configuration de : </p>



<ul class="wp-block-list"><li>Samba Share</li><li>File Editor </li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Au fur et à mesure de mes recherches, je mettrai cet article à jour, suis-moi ou abonnes-toi à ma newsletter (très peu de mails, je te rassure)</p></blockquote>



<h2 class="wp-block-heading">Samba Share</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="361" height="90" src="//i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-9.png" alt="" class="wp-image-859" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-9.png?w=361&amp;ssl=1 361w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-9.png?resize=300%2C75&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-9.png?resize=150%2C37&amp;ssl=1 150w" sizes="(max-width: 361px) 100vw, 361px" /></figure></div>



<p><strong>Samba Share</strong> permet la mise en place et la configuration rapide du partage des dossiers d&rsquo;Home Assistant. Le partage s&rsquo;effectue sans connaissance informatique particulière.</p>



<p>J&rsquo;ai cependant rencontré un petit problème pour le trouver à partir d&rsquo;un poste sous Windows, à la fin de ce chapitre, je détaillerai la solution que j&rsquo;ai trouvé.</p>



<p>Sur la page <strong>Superviseur</strong>, va sur l&rsquo;onglet <strong>Boutique des modules complémentaires</strong>, en théorie, Samba Share est présent dans les propositions, clique dessus. Si il n&rsquo;est pas présent, dans la barre de recherche, cherches « <em>Samba Share</em>« </p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="378" height="200" src="//i3.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-10.png" alt="" class="wp-image-860" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-10.png?w=378&amp;ssl=1 378w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-10.png?resize=300%2C159&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-10.png?resize=150%2C79&amp;ssl=1 150w" sizes="(max-width: 378px) 100vw, 378px" /></figure></div>



<p>Un fois que tu auras cliqué dessus, cliques sur <strong>Installer</strong>, après quelques secondes, l&rsquo;installation sera effective. </p>



<p>Avant de démarrer, va sur l&rsquo;onglet <strong>Configurations</strong>, la seule chose que tu dois renseigner sont <em>l&rsquo;username </em>et <em>password</em>, saisies les en les mettant entre guillemets :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="244" height="381" src="//i1.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-11.png" alt="" class="wp-image-861" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-11.png?w=244&amp;ssl=1 244w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-11.png?resize=192%2C300&amp;ssl=1 192w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-11.png?resize=96%2C150&amp;ssl=1 96w" sizes="(max-width: 244px) 100vw, 244px" /></figure></div>



<p>Une fois renseignés, cliques sur sauvegarder.</p>



<p>Reviens sur l&rsquo;onglet Infos du module et cliques sur <strong>Démarrer</strong>. Cependant, je t&rsquo;invite de toujours redémarrer ton Raspberry pour être sûr que les changements soient pris en compte.</p>



<p>Une fois cela fait, dans le voisinage réseau sur un de test ordinateurs, tu vois apparaître l&rsquo;assistant.</p>



<p>Sur Windows, si <a href="http://www.win10.fr/windows10-activer-desactiver-decouverte-de-reseau" target="_blank" rel="noreferrer noopener">la découverte réseau</a> est bien activé, que <a href="https://www.malekal.com/le-groupe-de-travail-windows-workgroup-pour-partager-ses-fichiers/" target="_blank" rel="noreferrer noopener">le groupe de travail</a> est correct, je vous invite à suivre <a href="https://programmation.surleweb-france.fr/voir-le-partage-home-assistant-sur-windows-10/" target="_blank" rel="noreferrer noopener">ce lien</a> dans lequel j&rsquo;explique la marche à suivre.</p>



<h2 class="wp-block-heading">File Editor</h2>



<p>File Editor est un module qui permettra de venir modifier les fichiers de Home Assistant. La principale différence avec Samba Share réside dans le fait que l&rsquo;on peut téléverser des dossiers complet avec celui-ci.</p>



<p>Sur le même principe que précédemment, recherches <strong>File Editor </strong>puis installes-le :</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="374" height="199" src="//i3.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-17.png" alt="" class="wp-image-873" srcset="https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-17.png?w=374&amp;ssl=1 374w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-17.png?resize=300%2C160&amp;ssl=1 300w, https://i0.wp.com/programmation.surleweb-france.fr/wp-content/uploads/2021/03/image-17.png?resize=150%2C80&amp;ssl=1 150w" sizes="auto, (max-width: 374px) 100vw, 374px" /></figure></div>



<p>Une fois l&rsquo;installation finie, pas de configuration, tu cliques sur <strong>Démarrer</strong> et tu peux cliquer sur <strong>Ouvrir l&rsquo;interface utilisateur Web</strong>.</p>



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



<p>Voilà, pour l&rsquo;instant, il y a 2 modules, je rajouterai ceux que je juge indispensables au fur et à mesure. Je t&rsquo;invite à me communiquer les tiens, afin que j&rsquo;étoffe un peu cela pour moi comme pour tous les autresutilisateurs.</p>
<p>L’article <a href="https://programmation.surleweb-france.fr/les-add-on-indispensables-pour-home-assistant/">Les Add-on indispensables pour Home Assistant</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/les-add-on-indispensables-pour-home-assistant/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">858</post-id>	</item>
	</channel>
</rss>
