Этот код работал хорошо, пока мой сервер не обновился до 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, настраивающий код с открытым исходным кодом, когда мне это нужно.
Да «HTTP_RAW_POST_DATA» был виновником. А также setRequestHeader больше не принимает подчеркивания.
В ответ на ваш вопрос junkfoodjunkie это для этого http://www.screentoys.com
Я построил его как учебный проект несколько лет назад, но функция «загрузить свою фотографию и сохранить ее» перестала работать, поэтому мой пост. Я не трогал его довольно долго, и поэтому заметил только недавно.
После некоторых экспериментов вот исправление:
$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 («X_FILENAME», dropOneName);
чтобы:
xhr.setRequestHeader («X-FILENAME», dropOneName);
в JS также.
Сохраняет изображение перетаскивания холста на сервер.
Других решений пока нет …