我试图将画布图像保存到我的服务器中的文件夹,但检查时该文件为空。我使用AJAX将编码的数据传递给我的PHP脚本,然后PHP脚本将其保存到服务器,为空。试图将base64(图像)文件保存到服务器,它是空的
这是我的代码有:
JS/AJAX:
function convertCanvasToImage(thecanvas) {
var ajax = new XMLHttpRequest();
ajax.open("POST",'testSave.php',false);
ajax.setRequestHeader('Content-Type', 'application/upload');
ajax.send(canvasData);
}
PHP(testSave.php):
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$filteredData=substr($imageData, strpos($imageData, ",")+1);
$unencodedData= base64_decode($filteredData);
//echo "unencodedData".$unencodedData;
$fp = fopen('test.png', 'wb');
fwrite($fp, $unencodedData);
fclose($fp);
感谢您的帮助提前!
你是否检查'$ imageData'实际上是否有任何内容,然后通过substr/base64填充它?只是因为你在php中得到一个空文件并不意味着它是php的错。毕竟,你的ajax调用使用'canvasdata',但是你没有在你的代码片段中定义它,所以你可能会发送一个javascript null/undefined。 – 2013-03-06 22:12:20
当'HTTP_RAW_POST_DATA'未被填充时(取决于php.ini设置),然后从虚拟文件名'php:// input'中读取。 – mario 2013-03-06 22:16:30
尝试从'php:// input'读取数据,即'$ imageData = file_get_contents(“php:// input”);' – Musa 2013-03-06 22:17:43