亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript dataURL POST到PHP不起作用

Javascript dataURL POST到PHP不起作用

慕絲7291255 2022-05-26 14:24:37
我正在嘗試將 dataURL 發布到 php 但沒有成功。我的 .js 文件如下。var dataURL = signaturePad.toDataURL();alert(dataURL);$.ajax({     type: "POST",     url: "test.php",     data: {     imgBase64: dataURL     }     }).done(function(o) {       console.log('saved');      alert(o);     });alert(dataURL) 輸出如下;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhkAAADZCAYAAACNbSIWAAAeW.....測試.php<?phpif($_POST['imgBase64']) { $img = $_POST['imgBase64'];}else{$img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhkAAADZCAYAAACNbSIWAAAeW.....";}$img = str_replace('data:image/png;base64,', '', $img);$img = str_replace(' ', '+', $img);$fileData = base64_decode($img);//saving$timestamp = date('YmdHis');$fileName = ''.$timestamp.'.png';echo"$fileData";file_put_contents($fileName, $fileData);?>在我的 php 文件中,我輸入了警報的值以進行測試。現在我的 php 頁面由于測試而 100% 工作并且沒有從我的 .js 函數傳遞任何值。但是使用正確的值,它甚至不會發布到我的 php 頁面,只有當我從 dataURL 中刪除所有非標準字符時,它才會發布,但數據損壞很明顯。為避免進一步混淆,以下代碼 .js 和 php 100% 有效。其中 var dataURL = signaturePad.toDataURL(); 傳遞給函數function postData(data) {    alert(data);    var desired = data.replace(/[^\w\s]/gi, '');    $.ajax({         type: "POST",         url: "test.php",         data: {         imgBase64: desired         }     }).done(function(o) {        console.log('saved');       alert(o);     }); }所以問題是由于特殊字符,.js 不會使用給定的 dataUrl 發布,但我無法刪除它們。我什至嘗試過 var desired = encodeURIComponent(data); 女巫我至少可以在 php 頁面上解碼,但這也不想發布。
查看完整描述

2 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

謝謝大家的回復。。


我最終首先創建了一個 blob 并發布了 blob。


function dataURLToBlob(dataURL) {

  var parts = dataURL.split(';base64,');

  var contentType = parts[0].split(":")[1];

  var raw = window.atob(parts[1]);

  var rawLength = raw.length;

  var uInt8Array = new Uint8Array(rawLength);


  for (var i = 0; i < rawLength; ++i) {

    uInt8Array[i] = raw.charCodeAt(i);

  }



  return new Blob([uInt8Array], { type: contentType }); 




    $.post("test2.php",

    {

      name: uInt8Array

    },

    function(data,status){

      alert("Data: " + data + "\nStatus: " + status);

    });


}


查看完整回答
反對 回復 2022-05-26
?
MM們

TA貢獻1886條經驗 獲得超2個贊

data: { 

    imgBase64: data

    //send key is imgBase64 and data value is undefined in given scope

    //replace data with dataURL

并在 php 文件中將其更改$_POST['image']為$_POST['imgBase64']


查看完整回答
反對 回復 2022-05-26
  • 2 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號