javascript - 使用 Ajax 和 PHP 上传图像

标签 javascript php jquery ajax post

我想在用户单击按钮时上传图像(#myid.save)。下面是我的代码:

HTML 代码:

<canvas id="cnv" width="500" height="100"></canvas>
<input id="myid_save" type="submit">Save</input>

JavaScript 代码:

$('#myid_save').on('click', function(e) {        
    e.preventDefault();
    saveViaAJAX();        
}); 

function saveViaAJAX()
{
    var testCanvas = document.getElementById("cnv");
    var canvasData = testCanvas.toDataURL("image/png");
    //var postData = "canvasData="+canvasData;

    $.ajax({
      type: "POST",
      url: "testSave.php",
      data: { 
         imgBase64: canvasData
      }
    }).done(function(o) {
      console.log('saved');                 
    });
}

testSave.php 文件:

<?php

    define('UPLOAD_DIR', 'C:\xampp\htdocs\drupal-7.34\sites\all\modules\myid\uploads\id_signature');
    $img = $_POST['imgBase64'];
    $img = str_replace('data:image/png;base64,', '', $img);
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $file = UPLOAD_DIR . '\sample.png';
    $success = file_put_contents($file, $data);
    print $success ? $file : 'Unable to save the file.'; 
?>

我的控制台显示“已保存”,但我的服务器中没有保存图像。我哪里失踪了?

最佳答案

testSave.php 引用 $_POST['canvasData'],但 JS 发送预期变量为 imgBase64。该行应改为 $img = $_POST['imgBase64'] 以匹配 AJAX。

关于javascript - 使用 Ajax 和 PHP 上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29270360/

相关文章:

javascript - 如何在 chrome 扩展中动态运行后台脚本?

JavaScript 属性值不更新 Bootstrap 样式

php - 错误 : No route found for "GET/app/example"

jquery添加类问题

jquery - 为什么除 Chrome 之外的所有浏览器都无法编辑可排序 div 中的文本区域和文本输入字段?

javascript - 如何将字符串注入(inject) Android WebView

php - 替换字符串中偶数位置的所有字符的最简单方法。

php - 如何在 SQLquery 中查询包含范围的列中的数据

javascript - 如何在单击按钮时附加多个下拉列表,每个下拉列表在名称属性中具有不同的索引?

javascript - window.fetch 的事件监听器