自服务器更改为php 5.6后图片上传中断

时间:2017-02-19 23:14:53

标签: php image file-upload upload

此代码运行良好,直到我的服务器升级到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的菜鸟,在需要时调整开源代码。

1 个答案:

答案 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中也是如此。

它将拖放的画布图像保存到服务器。