canvas獲取base64圖片並上傳php服務器

思路

  1. 將圖片渲染到canvas
  2. 使用canvas的toDataUrl()方法獲取bse64文件數據
  3. 將數據和文件名發送到服務端
  4. 服務端收到數據去掉”’,”前面的文件頭信息
  5. 使用base64_decode()解碼
  6. 使用file_put_contents()保存文件

前端

var canvas = $("canvas");
var cxt = canvas[0].getContext('2d');
var img = new Image();
img.src = "xxxxxx";
cxt.drawImage(img,0,0,300,300);
//獲取base64數據並上傳
var base64Img = canvas[0].toDataUrl();
//只能使用post,get會報錯,數據太長
$.post('upload.php',{data:base64Img:name:xxx},function(res){
    console.log(res);
});

後臺

$file = "./upload/{$_POST['name']}.jpg";//文件報錯路徑
$img = str_replace('data:image/jpeg;base64,', '', $_POST['data']);//將逗號簽名的都匹配掉
$img = str_replace(' ', '+', $img);
$res = file_put_contents( $file , base64_decode($img) );//注意base640decode()方法不要怕忘記寫了,必須要解碼才能保存
if($res){
    die(1);
}

如果不能保存文件請先檢查該目錄是否有寫權限,我因爲權限搞了一下午

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章