이미지를 base64 형식으로 변환하고 PHP로 업로드하는 방법: 1. 이미지를 base64 형식으로 변환합니다. 2. ajax를 통해 이미지를 서버에 업로드합니다. 3. 서버에서 이미지 형식을 다시 변환하고 저장합니다.
이 기사의 운영 환경: 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: 'POST', url: "上传接口路径", data: { 'base64': base64Data }, dataType: 'json', timeout: 50000, success: function(data){ console.log(data); }, complete:function() {}, error: function(xhr, type){ alert('上传超时啦,再试试'); } }); }
사실 프론트엔드 코드는 new FileReader() 인터페이스를 사용하여 이미지를 변환하고 싶습니다. 많은 인터페이스에서 사용되는 아동용 신발을 보려면 Google에서 new FileReader();를 검색하세요.
다음 단계는 서버 측 코드입니다. 위의 데모는 thinkphp를 프레임워크로 사용하여 작성되었지만 기본적으로 다른 프레임워크도 일반적입니다.
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; }
위는 PHP 코드입니다. 원리도 매우 간단합니다. 인터페이스를 통해 base64를 업로드한 다음 이미지로 변환하여 저장합니다.
thinkphp 3.2를 사용하고 있는데 데이터베이스가 필요하지 않고 PHP 환경을 직접 실행할 수 있습니다.
php 디렉토리 경로:
ApplicationHomeControllerBase64Controller.class.php
html 디렉토리 경로:
ApplicationHomeViewBase64imagesupload.html
권장 학습: php training
위 내용은 PHP에서 이미지를 base64 형식으로 변환하고 업로드하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!