{"id":25916,"date":"2021-06-15T14:01:00","date_gmt":"2021-06-15T11:01:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25916"},"modified":"2021-10-18T02:04:07","modified_gmt":"2021-10-17T23:04:07","slug":"telecharger-une-image-a-l-aide-de-la-bibliotheque-bulletproof-en-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/telecharger-une-image-a-l-aide-de-la-bibliotheque-bulletproof-en-php\/","title":{"rendered":"T\u00e9l\u00e9charger une image \u00e0 l&rsquo;aide de la biblioth\u00e8que Bulletproof en PHP"},"content":{"rendered":"<p>Le t\u00e9l\u00e9chargement d&rsquo;une image sur le serveur est une t\u00e2che courante pour les d\u00e9veloppeurs. On peut avoir fait cette t\u00e2che des centaines de fois. Au cours de ce processus de t\u00e9l\u00e9chargement, les d\u00e9veloppeurs doivent prendre en charge les \u00e9l\u00e9ments suivants.<\/p>\n<ul>\n<li>V\u00e9rifiez si le fichier t\u00e9l\u00e9charg\u00e9 est une image<\/li>\n<li>Cr\u00e9er un r\u00e9pertoire o\u00f9 les images seront stock\u00e9es<\/li>\n<li>G\u00e9n\u00e9rez un nom unique pour chaque image afin qu&rsquo;elle ne remplace pas celle existante avec le m\u00eame nom.<\/li>\n<li>Ajoutez \u00e9ventuellement une validation pour la dimension d&rsquo;une image. Si une image t\u00e9l\u00e9charg\u00e9e a une dimension sup\u00e9rieure \u00e0 celle sp\u00e9cifi\u00e9e, une erreur est g\u00e9n\u00e9r\u00e9e.<\/li>\n<\/ul>\n<p>Ce sont les v\u00e9rifications recommand\u00e9es qu&rsquo;un d\u00e9veloppeur doit suivre lors de l&rsquo;\u00e9criture du code. On peut \u00e9crire des conditions pour toutes ces \u00e9tapes dans le code. Mais cela demandera un peu de travail et le code devient long.<\/p>\n<p>Je recommanderai d&rsquo;utiliser la biblioth\u00e8que <a href=\"https:\/\/github.com\/samayo\/bulletproof\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Bulletproof<\/a> qui g\u00e8re toutes ces \u00e9tapes pour vous sous le capot. Cela vous \u00e9vite d&rsquo;ajouter de la logique \u00e0 chaque \u00e9tape et de r\u00e9duire le nombre de lignes de votre code.<\/p>\n<p>Bulletproof est un t\u00e9l\u00e9chargeur d&rsquo;images s\u00e9curis\u00e9 PHP, avec une belle API. Nous avons essay\u00e9 cette biblioth\u00e8que pour notre projet et nous sommes assez satisfaits du r\u00e9sultat final. C&rsquo;est pourquoi j&rsquo;ai d\u00e9cid\u00e9 de partager un mot sur cette biblioth\u00e8que avec nos lecteurs.<\/p>\n<p>La biblioth\u00e8que Bulletproof poss\u00e8de les fonctionnalit\u00e9s suivantes dans son noyau, ce qui la rend plus s\u00e9curis\u00e9e.<\/p>\n<ul>\n<li>Utilise exif_imagetype() pour obtenir la v\u00e9ritable image mime (.extension)<\/li>\n<li>Utilise getimagesize() pour v\u00e9rifier si l&rsquo;image a une hauteur\/largeur valide en pixels.<\/li>\n<li>Noms d&rsquo;images aseptis\u00e9s, autorisations strictes de dossier et plus encore\u2026<\/li>\n<\/ul>\n<p>Cela \u00e9tant dit, voyons comment t\u00e9l\u00e9charger des images en PHP \u00e0 l&rsquo;aide de la biblioth\u00e8que Bulletproof.<\/p>\n<h3>Commencer<\/h3>\n<p>Pour commencer avec la biblioth\u00e8que Bulletproof, installez-la \u00e0 l&rsquo;aide de la commande Composer ci-dessous. Assurez-vous que <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer est<\/a> install\u00e9 sur le syst\u00e8me.<\/p>\n<pre><code>composer require samayo\/bulletproof:4.0.*<\/code><\/pre>\n<p>Ensuite, cr\u00e9ez un formulaire HTML simple avec une entr\u00e9e de fichier et un bouton d&rsquo;envoi.<\/p>\n<pre><code>&lt;form method=\"POST\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"image\" accept=\"image\/*\" required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Upload\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h3>T\u00e9l\u00e9charger une image \u00e0 l&rsquo;aide de la biblioth\u00e8que Bulletproof<\/h3>\n<p>Nous sommes fix\u00e9s avec une biblioth\u00e8que et un formulaire HTML. Ajoutons maintenant un code fourni par la biblioth\u00e8que qui t\u00e9l\u00e9charge une image sur le serveur.<\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$file = new BulletproofImage($_FILES);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$file-&gt;setLocation('uploads');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if ($file[\"image\"]) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload = $file-&gt;upload();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($upload) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $upload-&gt;getFullPath();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $file-&gt;getError();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Vous avez termin\u00e9. Allez-y et testez-le. Vous verrez vos images stock\u00e9es dans le dossier \u00ab\u00a0t\u00e9l\u00e9chargements\u00a0\u00bb avec un nom unique. L&rsquo;utilisateur peut changer cet emplacement avec autre chose.<\/p>\n<p>Si vous essayez de t\u00e9l\u00e9charger des fichiers autres que des images, vous obtiendrez une erreur. Juste au cas o\u00f9, si vous souhaitez \u00e9galement d\u00e9finir la dimension, ajoutez l&rsquo;instruction ci-dessous dans le code ci-dessus.<\/p>\n<pre><code>$file-&gt;setDimension(600, 400);<\/code><\/pre>\n<p>Ici, &lsquo;600&rsquo; est la largeur de l&rsquo;image et &lsquo;400&rsquo; est la hauteur d&rsquo;une image. Ajustez les valeurs selon vos besoins.<\/p>\n<h3>T\u00e9l\u00e9charger plusieurs images \u00e0 l&rsquo;aide de la biblioth\u00e8que Bulletproof<\/h3>\n<p>Vous voudrez peut-\u00eatre t\u00e9l\u00e9charger plusieurs images sur un serveur \u00e0 l&rsquo;aide de cette biblioth\u00e8que. Cela n\u00e9cessite un peu de changement dans le code ci-dessus. Vous devez ajouter un attribut &lsquo;multiple&rsquo; \u00e0 l&rsquo;entr\u00e9e du fichier. Utilisez \u00e9galement le format de tableau pour le nom du fichier d&rsquo;entr\u00e9e. Apr\u00e8s cela, nous allons parcourir chaque image et la t\u00e9l\u00e9charger sur le serveur comme suit.<\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\n\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\u00a0\u00a0\u00a0for($i = 0; $i &lt; count($_FILES['image']['name']); $i++) {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_file = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\" =&gt; $_FILES['image']['name'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\" =&gt; $_FILES['image']['type'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"tmp_name\" =&gt; $_FILES['image']['tmp_name'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"error\" =&gt; $_FILES['image']['error'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"size\" =&gt; $_FILES['image']['size'][$i],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file = new BulletproofImage($arr_file);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$file-&gt;setLocation('uploads');\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$upload = $file-&gt;upload();\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;\n&lt;form method=\"POST\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"file\" name=\"image[]\" accept=\"image\/*\" multiple required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"submit\" value=\"Upload\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>C&rsquo;est \u00e7a! J&rsquo;esp\u00e8re que vous comprenez comment t\u00e9l\u00e9charger une image via la biblioth\u00e8que Bulletproof. S&rsquo;il vous pla\u00eet partager vos pens\u00e9es et suggestions dans la section commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-telecharger-et-compresser-des-images-dans-laravel\/\" title=\"Un guide pour t\u00e9l\u00e9charger et compresser des images dans Laravel\">Un guide pour t\u00e9l\u00e9charger et compresser des images dans Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-optimiser-l-image-lors-du-telechargement-en-php\/\" title=\"Comment optimiser l&#039;image lors du t\u00e9l\u00e9chargement en PHP\">Comment optimiser l&rsquo;image lors du t\u00e9l\u00e9chargement en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/redimensionner-l-image-en-php-a-l-aide-de-tinypng\/\" title=\"Redimensionner l&#039;image en PHP avec TinyPNG\">Redimensionner l&rsquo;image en PHP avec TinyPNG<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bulletproof est une biblioth\u00e8que utilis\u00e9e pour t\u00e9l\u00e9charger des images en PHP avec s\u00e9curit\u00e9. Dans cet article, nous \u00e9tudions comment installer et utiliser cette biblioth\u00e8que dans notre application<\/p>\n","protected":false},"author":1,"featured_media":21621,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[273],"tags":[844],"class_list":["post-25916","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=25916"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25916\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21621"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}