我希望你能够将画布图像保存到服务器文件夹中,但是检查后发现该文件为空。我使用AJAX将编码数据传递给我的PHP脚本,然后PHP脚本将其保存到服务器上,但是文件为空。
这是我的代码:
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。 - Marc BHTTP_RAW_POST_DATA
未填充(取决于php.ini设置)时,从虚拟文件名php://input
中读取。 - mariophp://input
读取数据,即$imageData = file_get_contents("php://input");
。 - Musa