此代码运行良好,直到我的服务器升级到PHP 5.6。
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {
$imageData = $GLOBALS['HTTP_RAW_POST_DATA'];
$filteredData = substr($imageData, strpos($imageData, ",")+1);
$unencodedData = base64_decode($filteredData);
$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
$fp = fopen('upload/' . $fn, 'w');
fwrite($fp, $unencodedData);
fclose($fp);
}
我是PHP的菜鸟,在需要时调整开源代码。
答案 0 :(得分:0)
是的&#34; HTTP_RAW_POST_DATA&#34;是罪魁祸首。以及setRequestHeader不再接受下划线。 回答你的问题junkfoodjunkie这是http://www.screentoys.com 几年前我把它建成了一个学习项目,但是“加载你自己的照片并保存它”#39;功能已停止工作,因此我的帖子。我没有触及它一段时间,所以最近才注意到。 经过一些实验,这里有了解决方法:
$img = file_get_contents("php://input");
$img = str_replace('data:image/jpeg;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false);
file_put_contents('upload/'.$fn, $data);
不得不改变: xhr.setRequestHeader(&#34; X_FILENAME&#34;,dropOneName); 至: xhr.setRequestHeader(&#34; X-FILENAME&#34;,dropOneName); 在JS中也是如此。
它将拖放的画布图像保存到服务器。