当前位置:首页 > PHP教程 > php上传下载 > 列表

PHP常用函数之base64图片上传功能详解

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-14 15:17:28 浏览: 评论:0 

这篇文章主要介绍了PHP常用函数之base64图片上传功能,结合实例形式分析了前台ajax提交及后台base64图片编码上传相关操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP常用函数之base64图片上传功能,分享给大家供大家参考,具体如下:

HTML页面代码:

  1. <html> 
  2. <head> 
  3. <meta charset="utf-8"
  4. </head> 
  5. <body> 
  6. <img id="articleImg" width="180" height="100"
  7. <input type="file" value="上传" id="articleImgBtn" /> 
  8. <script type="text/javascript" src = 'jquery-2.1.4.min.js'></script> 
  9. <script type="text/javascript"
  10. $('#articleImgBtn').change(function(){ 
  11. run(this, function (data) { 
  12. uploadImage(data); 
  13. }); 
  14. }); 
  15. function run(input_file, get_data) { 
  16. /*input_file:文件按钮对象*/ 
  17. /*get_data: 转换成功后执行的方法*/ 
  18. if (typeof (FileReader) === 'undefined') { 
  19. alert("抱歉,你的浏览器不支持 FileReader,不能将图片转换为Base64,请使用现代浏览器操作!"); 
  20. else { 
  21. try { 
  22. /*图片转Base64 核心代码*/ 
  23. var file = input_file.files[0]; 
  24. //这里我们判断下类型如果不是图片就返回 去掉就可以上传任意文件 
  25. if (!/image\/\w+/.test(file.type)) { 
  26. alert("请确保文件为图像类型"); 
  27. return false; 
  28. var reader = new FileReader(); 
  29. reader.onload = function () { 
  30. get_data(this.result); 
  31. reader.readAsDataURL(file); 
  32. } catch (e) { 
  33. alert('图片转Base64出错啦!' + e.toString()) 
  34. function uploadImage(img) { 
  35. //判断是否有选择上传文件 
  36. var imgPath = $("#articleImgBtn").val(); 
  37. if (imgPath == "") { 
  38. alert("请选择上传图片!"); 
  39. return
  40. //判断上传文件的后缀名 
  41. var strExtension = imgPath.substr(imgPath.lastIndexOf('.') + 1); 
  42. if (strExtension != 'jpg' && strExtension != 'gif' 
  43. && strExtension != 'png' && strExtension != 'bmp') { 
  44. alert("请选择图片文件"); 
  45. return
  46. $.ajax({ 
  47. type: "POST"
  48. url: 'http://localhost/123.php'
  49. // data: {file: img.substr(img.indexOf(',') + 1)}, //视情况将base64的前面字符串data:image/png;base64,删除 
  50. data: {file: img}, //视情况将base64的前面字符串data:image/png;base64,删除 
  51. cache: false, 
  52. success: function(data) { 
  53. var return_info = JSON.parse(data); 
  54. if(return_info.status){ 
  55. $("#articleImg").attr('src', return_info.path); 
  56. alert("上传成功"); 
  57. }else
  58. alert(return_infoerr_info); 
  59. }, 
  60. error: function(XMLHttpRequest, textStatus, errorThrown) { 
  61. alert("上传失败,请检查网络后重试"); 
  62. }); 
  63. </script> 
  64. </body> 
  65. </html> 

PHP 处理代码:

  1. function upload_image($file_data){ 
  2. $upload_result = array('status' => true, 'msg'=>'','err_info'=>''); 
  3. if (preg_match('/^(data:\s*image\/(\w+);base64,)/'$file_data$result)) { 
  4. //处理base64字符串 
  5. $img_base64 = str_replace($result[1], ''$file_data); 
  6. $img_base64 = str_replace('='''$img_base64); 
  7. $source_img = base64_decode($img_base64); 
  8. //判断文件大小 
  9. $file_size = 
  10. //上传目录 
  11. $basedir = './img_test'
  12. //后缀 
  13. $img_suffix = $result[2];//文件后缀 
  14. //文件名 
  15. // $filename = uniqid();//文件名 
  16. $filename = date('YmdHis',time());//文件名 
  17. //文件完整路径 
  18. $filepath = $basedir . "/" . $filename . "." . $img_suffix
  19. //目录若果不存在,则创建目录 
  20. if(!is_dir($basedir)){ 
  21. mkdir($basedir); 
  22. chmod($basedir,0777); 
  23. //上传文件 
  24. try { 
  25. file_put_contents($filepath$img_base64); 
  26. $filepath = substr($filepath, 1); 
  27. $upload_result = array('status' => true, 'msg'=>'上传成功','err_info'=>'','path'=>$filepath); 
  28. return $upload_result
  29. } catch (Exception $e) { 
  30. $upload_result = array('status' => false, 'msg'=>'上传失败','err_info'=>$e->getMessage()); 
  31. return $upload_result
  32. // if (file_put_contents($filepath, base64_decode(str_replace($result[1], '', $file_data)))) { 
  33. // //$size = getimagesize($filepath); 
  34. // $filepath = substr($filepath, 1); 
  35. // //$arr['filepath'] = $filepath; 
  36. // //$arr['size'] = $size[3]; 
  37. // return $filepath; 
  38. // }else{ 
  39. // return false; 
  40. // } 
  41. }else
  42. $upload_result = array('status' => false, 'msg'=>'上传失败','err_info'=>'请携带base64字符串的前缀'); 
  43. return $upload_result
  44. $res = upload_image($file_data); 
  45. echo json_encode($res);

Tags: PHP图片上传 base64

分享到: