Comment convertir des images au format base64 et les télécharger en PHP : 1. Convertir l'image au format base64 ; 2. Télécharger l'image sur le serveur via ajax ; 3. Reconvertir le format de l'image sur le serveur et le stocker.
L'environnement d'exploitation de cet article : système windows10, php 7, ordinateur thinkpad t480.
Dans le processus de projets de développement réels, vous rencontrerez certainement le téléchargement d'images. Par exemple, les amis qui utilisent thinkphp doivent être familiers avec la méthode de téléchargement import("@.ORG.UploadFile"); Aujourd'hui, nous allons parler de la façon de télécharger des images en utilisant HTML base 64, jetons un coup d'œil.
Utilise principalement l'interface de html5 FileReader Puisqu'il s'agit de html5, je ne dirai pas grand-chose sur les navigateurs pris en charge.
Je peux vous donner une idée approximative, c’est en fait assez simple. Après avoir sélectionné l'image, js convertira d'abord l'image sélectionnée au format base64, puis la téléchargera sur le serveur via ajax. Le serveur la convertira ensuite en image pour le stockage.
Jetons d'abord un coup d'œil au code frontal.
html part
<input type="file" id="imagesfile">
js part
$("#imagesfile").change(function (){ var file = this.files[0]; //用size属性判断文件大小不能超过5M ,前端直接判断的好处,免去服务器的压力。 if( file.size > 5*1024*1024 ){ alert( "你上传的文件太大了!" ) } //好东西来了 var reader=new FileReader(); reader.onload = function(){ // 通过 reader.result 来访问生成的 base64 DataURL var base64 = reader.result; //打印到控制台,按F12查看 console.log(base64); //上传图片 base64_uploading(base64); } reader.readAsDataURL(file); }); //AJAX上传base64 function base64_uploading(base64Data){ $.ajax({ type: 'POST', url: "上传接口路径", data: { 'base64': base64Data }, dataType: 'json', timeout: 50000, success: function(data){ console.log(data); }, complete:function() {}, error: function(xhr, type){ alert('上传超时啦,再试试'); } }); }
En fait, le code frontal n'est pas compliqué, il utilise principalement la nouvelle interface FileReader(); en savoir plus Pour les chaussures pour enfants utilisées par de nombreuses interfaces, recherchez sur Google new FileReader();.
La prochaine étape est le code côté serveur. La démo ci-dessus est écrite en utilisant thinkphp comme framework, mais d'autres frameworks sont également fondamentalement courants.
function base64imgsave($img){ //文件夹日期 $ymd = date("Ymd"); //图片路径地址 $basedir = 'upload/base64/'.$ymd.''; $fullpath = $basedir; if(!is_dir($fullpath)){ mkdir($fullpath,0777,true); } $types = empty($types)? array('jpg', 'gif', 'png', 'jpeg'):$types; $img = str_replace(array('_','-'), array('/','+'), $img); $b64img = substr($img, 0,100); if(preg_match('/^(data:\s*image\/(\w+);base64,)/', $b64img, $matches)){ $type = $matches[2]; if(!in_array($type, $types)){ return array('status'=>1,'info'=>'图片格式不正确,只支持 jpg、gif、png、jpeg哦!','url'=>''); } $img = str_replace($matches[1], '', $img); $img = base64_decode($img); $photo = '/'.md5(date('YmdHis').rand(1000, 9999)).'.'.$type; file_put_contents($fullpath.$photo, $img); $ary['status'] = 1; $ary['info'] = '保存图片成功'; $ary['url'] = $basedir.$photo; return $ary; } $ary['status'] = 0; $ary['info'] = '请选择要上传的图片'; return $ary; }
Ce qui précède est le code PHP. Le principe est également très simple. Téléchargez le base64 via l'interface, puis convertissez-le en image et enregistrez-le.
J'utilise thinkphp 3.2, aucune base de données n'est nécessaire, l'environnement PHP peut être exécuté directement.
Le chemin du répertoire php est :
ApplicationHomeControllerBase64Controller.class.php
Le chemin du répertoire html est :
ApplicationHomeViewBase64imagesupload.html
Apprentissage recommandé : php training
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!