>  기사  >  백엔드 개발  >  PHP에서 이미지를 base64 형식으로 변환하고 업로드하는 방법

PHP에서 이미지를 base64 형식으로 변환하고 업로드하는 방법

王林
王林원래의
2021-10-19 15:49:577215검색

이미지를 base64 형식으로 변환하고 PHP로 업로드하는 방법: 1. 이미지를 base64 형식으로 변환합니다. 2. ajax를 통해 이미지를 서버에 업로드합니다. 3. 서버에서 이미지 형식을 다시 변환하고 저장합니다.

PHP에서 이미지를 base64 형식으로 변환하고 업로드하는 방법

이 기사의 운영 환경: windows10 시스템, php 7, thinkpad t480 컴퓨터.

실제 개발 프로젝트를 진행하다 보면 이미지 업로드를 반드시 접하게 됩니다. 예를 들어 thinkphp를 사용하는 친구들은 import("@.ORG.UploadFile"); 업로드 방법에 익숙할 것입니다. 오늘은 html base 64를 사용하여 이미지를 업로드하는 방법에 대해 이야기하겠습니다. 살펴보겠습니다.

주로 html5 FileReader의 인터페이스를 사용합니다. html5이므로 지원되는 브라우저에 대해서는 많이 언급하지 않겠습니다.

대략적인 아이디어를 드릴 수 있는데, 사실 꽤 간단합니다. 이미지를 선택한 후 js는 먼저 선택한 이미지를 base64 형식으로 변환한 다음 ajax를 통해 서버에 업로드합니다. 그러면 서버는 이를 이미지로 변환하여 저장합니다.

먼저 프론트엔드 코드를 살펴보겠습니다.

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: &#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;);
         
     }
   });
}

사실 프론트엔드 코드는 new FileReader() 인터페이스를 사용하여 이미지를 변환하고 싶습니다. 많은 인터페이스에서 사용되는 아동용 신발을 보려면 Google에서 new FileReader();를 검색하세요.

다음 단계는 서버 측 코드입니다. 위의 데모는 thinkphp를 프레임워크로 사용하여 작성되었지만 기본적으로 다른 프레임워크도 일반적입니다.

  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;
  }

위는 PHP 코드입니다. 원리도 매우 간단합니다. 인터페이스를 통해 base64를 업로드한 다음 이미지로 변환하여 저장합니다.

thinkphp 3.2를 사용하고 있는데 데이터베이스가 필요하지 않고 PHP 환경을 직접 실행할 수 있습니다.

php 디렉토리 경로:

ApplicationHomeControllerBase64Controller.class.php

html 디렉토리 경로:

ApplicationHomeViewBase64imagesupload.html

권장 학습: php training

위 내용은 PHP에서 이미지를 base64 형식으로 변환하고 업로드하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.