您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關PHP常用函數(shù)之base64圖片上傳功能的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
HTML頁面代碼:
<html> <head> <meta charset="utf-8"> </head> <body> <img id="articleImg" width="180" height="100"> <input type="file" value="上傳" id="articleImgBtn" /> <script type="text/javascript" src = 'jquery-2.1.4.min.js'></script> <script type="text/javascript"> $('#articleImgBtn').change(function(){ run(this, function (data) { uploadImage(data); }); }); function run(input_file, get_data) { /*input_file:文件按鈕對象*/ /*get_data: 轉換成功后執(zhí)行的方法*/ if (typeof (FileReader) === 'undefined') { alert("抱歉,你的瀏覽器不支持 FileReader,不能將圖片轉換為Base64,請使用現(xiàn)代瀏覽器操作!"); } else { try { /*圖片轉Base64 核心代碼*/ var file = input_file.files[0]; //這里我們判斷下類型如果不是圖片就返回 去掉就可以上傳任意文件 if (!/image\/\w+/.test(file.type)) { alert("請確保文件為圖像類型"); return false; } var reader = new FileReader(); reader.onload = function () { get_data(this.result); } reader.readAsDataURL(file); } catch (e) { alert('圖片轉Base64出錯啦!' + e.toString()) } } } function uploadImage(img) { //判斷是否有選擇上傳文件 var imgPath = $("#articleImgBtn").val(); if (imgPath == "") { alert("請選擇上傳圖片!"); return; } //判斷上傳文件的后綴名 var strExtension = imgPath.substr(imgPath.lastIndexOf('.') + 1); if (strExtension != 'jpg' && strExtension != 'gif' && strExtension != 'png' && strExtension != 'bmp') { alert("請選擇圖片文件"); return; } $.ajax({ type: "POST", url: 'http://localhost/123.php', // data: {file: img.substr(img.indexOf(',') + 1)}, //視情況將base64的前面字符串data:image/png;base64,刪除 data: {file: img}, //視情況將base64的前面字符串data:image/png;base64,刪除 cache: false, success: function(data) { var return_info = JSON.parse(data); if(return_info.status){ $("#articleImg").attr('src', return_info.path); alert("上傳成功"); }else{ alert(return_infoerr_info); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("上傳失敗,請檢查網(wǎng)絡后重試"); } }); } </script> </body> </html>
PHP 處理代碼:
function upload_image($file_data){ $upload_result = array('status' => true, 'msg'=>'','err_info'=>''); if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file_data, $result)) { //處理base64字符串 $img_base64 = str_replace($result[1], '', $file_data); $img_base64 = str_replace('=', '', $img_base64); $source_img = base64_decode($img_base64); //判斷文件大小 $file_size = //上傳目錄 $basedir = './img_test'; //后綴 $img_suffix = $result[2];//文件后綴 //文件名 // $filename = uniqid();//文件名 $filename = date('YmdHis',time());//文件名 //文件完整路徑 $filepath = $basedir . "/" . $filename . "." . $img_suffix; //目錄若果不存在,則創(chuàng)建目錄 if(!is_dir($basedir)){ mkdir($basedir); chmod($basedir,0777); } //上傳文件 try { file_put_contents($filepath, $img_base64); $filepath = substr($filepath, 1); $upload_result = array('status' => true, 'msg'=>'上傳成功','err_info'=>'','path'=>$filepath); return $upload_result; } catch (Exception $e) { $upload_result = array('status' => false, 'msg'=>'上傳失敗','err_info'=>$e->getMessage()); return $upload_result; } // if (file_put_contents($filepath, base64_decode(str_replace($result[1], '', $file_data)))) { // //$size = getimagesize($filepath); // $filepath = substr($filepath, 1); // //$arr['filepath'] = $filepath; // //$arr['size'] = $size[3]; // return $filepath; // }else{ // return false; // } }else{ $upload_result = array('status' => false, 'msg'=>'上傳失敗','err_info'=>'請攜帶base64字符串的前綴'); return $upload_result; } } $res = upload_image($file_data); echo json_encode($res);
感謝各位的閱讀!關于“PHP常用函數(shù)之base64圖片上傳功能的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。