Comment convertir des images au format base64 en php et les télécharger

王林
Libérer: 2023-03-13 12:14:01
original
7207 Les gens l'ont consulté

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.

Comment convertir des images au format base64 en php et les télécharger

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">
Copier après la connexion

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: &#39;POST&#39;,
     url: "上传接口路径",
     data: { 
      &#39;base64&#39;: base64Data
     },
     dataType: &#39;json&#39;,
     timeout: 50000,
     success: function(data){
        
        console.log(data);
        
     },
     complete:function() {},
     error: function(xhr, type){
         alert(&#39;上传超时啦,再试试&#39;);
         
     }
   });
}
Copier après la connexion

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 = &#39;upload/base64/&#39;.$ymd.&#39;&#39;;
    $fullpath = $basedir;
    if(!is_dir($fullpath)){
      mkdir($fullpath,0777,true);
    }
    $types = empty($types)? array(&#39;jpg&#39;, &#39;gif&#39;, &#39;png&#39;, &#39;jpeg&#39;):$types;
    
    $img = str_replace(array(&#39;_&#39;,&#39;-&#39;), array(&#39;/&#39;,&#39;+&#39;), $img);
    
    $b64img = substr($img, 0,100);
    
    if(preg_match(&#39;/^(data:\s*image\/(\w+);base64,)/&#39;, $b64img, $matches)){
      
    $type = $matches[2];
    if(!in_array($type, $types)){
      return array(&#39;status&#39;=>1,&#39;info&#39;=>&#39;图片格式不正确,只支持 jpg、gif、png、jpeg哦!&#39;,&#39;url&#39;=>&#39;&#39;);
    }
    $img = str_replace($matches[1], &#39;&#39;, $img);
    $img = base64_decode($img);
    $photo = &#39;/&#39;.md5(date(&#39;YmdHis&#39;).rand(1000, 9999)).&#39;.&#39;.$type;
    file_put_contents($fullpath.$photo, $img);
      
      $ary[&#39;status&#39;] = 1;
      $ary[&#39;info&#39;] = &#39;保存图片成功&#39;;
      $ary[&#39;url&#39;] = $basedir.$photo;
      
      return $ary;
    
    }
    
      $ary[&#39;status&#39;] = 0;
      $ary[&#39;info&#39;] = &#39;请选择要上传的图片&#39;;
      
      return $ary;
  }
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal