0

我在将图像保存到本地文件时遇到问题。其他一切看起来都很好,但图像不会只是保存。这是我的代码片段。

    function saveImage(){
    var xmlhttp;
    xmlhttp=((window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"));
    xmlhttp.onreadystatechange=function()
    {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            //do something with the response
        }
    }
    xmlhttp.open("POST","ajxstuff.php",true);
    var oldCanvas = document.getElementById('cvs').toDataURL("image/png");
    var img = new Image();
    img.src = oldCanvas;
    xmlhttp.setRequestHeader("Content-type", "application/upload")
    xmlhttp.send(oldCanvas);
}

这是 ajxstuff.php

<?php

if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
    // Get the data like you would with traditional post
    $rawImage=$GLOBALS['HTTP_RAW_POST_DATA'];

    // Remove the headers  
    $removeHeaders=substr($rawImage, strpos($rawImage, ",")+1);

    // decode it from base 64 and into image data only
    $decode=base64_decode($removeHeaders);

    // save to your server
    $saveName = 'C:\Users\Administrator\Downloads\image009.png';
    $fopen = fopen($saveName, 'wb' );
    fwrite( $fopen, $decode);
    fclose( $fopen );
}

?>
4

1 回答 1

0

好的,这是我修改后的答案:您可以不将图像作为(看起来像)文件发送,而是将其作为文本发送 - 因为这是您从 toDataUrl() (图像的 base64 编码表示)获得的。

$.post('ajxstuff.php',{
    myChart: document.getElementById('cvs').toDataURL()
}, function ()
{
    /* callback */
})

在您的 PHP 脚本中,数据将显示在 $_POST['myChart'] 中 - 您可以将其写入如下文件:

<?php
    $data = base64_decode($_POST['myChart']);
    file_put_contents('C:\Users\Administrator\Downloads\image009.png', $data);
?>
于 2015-07-11T09:23:47.850 回答