Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar imej kepada format base64 dalam php dan muat naiknya
Cara menukar imej kepada format base64 dan memuat naiknya dalam PHP: 1. Tukar imej kepada format base64 2. Muat naik imej ke pelayan melalui ajax 3. Tukar semula format imej pada pelayan dan simpan boleh.
Persekitaran pengendalian artikel ini: sistem Windows 10, PHP 7, komputer thinkpad t480.
Dalam proses projek pembangunan sebenar, anda pasti akan menghadapi muat naik imej Sebagai contoh, rakan yang menggunakan thinkphp mesti biasa dengan import("@.ORG.UploadFile"); Hari ini kita akan bercakap tentang cara memuat naik imej menggunakan html base 64, mari kita lihat.
Terutamanya menggunakan antara muka html5 FileReader Memandangkan ia adalah html5, saya tidak akan bercakap banyak tentang penyemak imbas yang disokong.
Saya boleh bercakap secara ringkas tentang idea itu, ia sebenarnya agak mudah. Selepas memilih imej, js akan menukar imej yang dipilih terlebih dahulu ke dalam format base64, dan kemudian memuat naiknya ke pelayan melalui ajax Pelayan kemudian akan menukarnya menjadi imej untuk penyimpanan.
Mari kita lihat kod bahagian hadapan dahulu.
bahagian html
<input type="file" id="imagesfile">
bahagian js
$("#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('上传超时啦,再试试'); } }); }
Malah, kod bahagian hadapan tidak rumit, terutamanya menggunakan antara muka FileReader(); conversion Picture, new FileReader(); dan antara muka lain Jika anda ingin mengetahui lebih lanjut tentang kasut kanak-kanak yang digunakan oleh antara muka, cari FileReader();
Langkah seterusnya ialah kod bahagian pelayan Demo di atas ditulis menggunakan thinkphp sebagai rangka kerja, tetapi rangka kerja lain juga pada asasnya biasa.
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; }
Di atas ialah kod PHP Prinsipnya juga sangat mudah. Dapatkan base64 dimuat naik melalui antara muka, dan kemudian tukarkannya kepada imej dan simpannya.
Saya menggunakan thinkphp 3.2, tiada pangkalan data diperlukan, persekitaran PHP boleh dijalankan terus.
laluan direktori php ialah:
ApplicationHomeControllerBase64Controller.class.php
laluan direktori html ialah:
ApplicationHomeViewBase64🎜>imagesupload.html
Pembelajaran yang disyorkan: latihan php
Atas ialah kandungan terperinci Bagaimana untuk menukar imej kepada format base64 dalam php dan muat naiknya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!