So konvertieren Sie Bilder in PHP in das Base64-Format und laden sie hoch

王林
Freigeben: 2023-03-13 12:14:01
Original
7207 Leute haben es durchsucht

So konvertieren Sie Bilder in das Base64-Format und laden sie in PHP hoch: 1. Konvertieren Sie das Bild in das Base64-Format. 2. Laden Sie das Bild über Ajax auf den Server hoch. 3. Konvertieren Sie das Bildformat erneut auf dem Server und speichern Sie es.

So konvertieren Sie Bilder in PHP in das Base64-Format und laden sie hoch

Die Betriebsumgebung dieses Artikels: Windows 10-System, PHP 7, Thinkpad T480-Computer.

Im Prozess tatsächlicher Entwicklungsprojekte werden Sie auf jeden Fall auf das Hochladen von Bildern stoßen. Freunde, die thinkphp verwenden, müssen beispielsweise mit der Upload-Methode import("@.ORG.UploadFile"); vertraut sein. Heute werden wir darüber sprechen, wie man Bilder mit HTML Base 64 hochlädt. Werfen wir einen Blick darauf.

Verwendet hauptsächlich die Schnittstelle von HTML5 FileReader. Da es HTML5 ist, werde ich nicht viel über die unterstützten Browser sagen.

Ich kann dir eine grobe Vorstellung geben, es ist eigentlich ganz einfach. Nach der Auswahl des Bildes konvertiert js das ausgewählte Bild zunächst in das Base64-Format und lädt es dann über Ajax auf den Server hoch. Der Server konvertiert es dann zur Speicherung in ein Bild.

Werfen wir zunächst einen Blick auf den Front-End-Code.

HTML-Teil

<input type="file" id="imagesfile">
Nach dem Login kopieren

$("#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;);
         
     }
   });
}
Nach dem Login kopieren

Tatsächlich ist der Front-End-Code nicht kompliziert, um Bilder zu konvertieren, neue FileReader(); Mehr wissen Für Kinderschuhe, die von vielen Schnittstellen verwendet werden, suchen Sie bei Google nach new FileReader();.


Der nächste Schritt ist der serverseitige Code. Die obige Demo wurde mit thinkphp als Framework geschrieben, aber auch andere Frameworks sind grundsätzlich üblich.

  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;
  }
Nach dem Login kopieren
Das obige ist der PHP-Code. Das Prinzip ist auch sehr einfach. Laden Sie base64 über die Schnittstelle hoch, konvertieren Sie es dann in ein Bild und speichern Sie es.

Ich verwende thinkphp 3.2, es wird keine Datenbank benötigt, die PHP-Umgebung kann direkt ausgeführt werden.


php-Verzeichnispfad ist:

ApplicationHomeControllerBase64Controller.class.php


html-Verzeichnispfad ist:

ApplicationHomeViewBase64imagesupload.html

Empfohlenes Lernen:

php-Schulung

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Bilder in PHP in das Base64-Format und laden sie hoch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage