Создание изображения из datauri не работает только при отправке данных из POST

Используя PHP, я пытаюсь сгенерировать изображение из datauri. Это прекрасно работает, если я жестко закодирую строку для декодирования следующим образом:

$sourceString = "iVBORw0KGgoAAAANSUhEUgAAAJ8AAAArCAYAAABmQFqDA..."; // I truncated the actual string for this example...
$destination = $_SERVER['DOCUMENT_ROOT'].'/test.jpeg';
$image = imagecreatefromstring(base64_decode($sourceString));
imagejpeg($image, $destination, 100);

Это работает нормально и создает изображение с именем «test.jpeg» в моей корневой папке.

Моя проблема в том, что если я возьму данные из переменной POST, это не сработает. Вот мой код:

$sourceString = $_POST['data'];
$destination = $_SERVER['DOCUMENT_ROOT'].'/test.jpeg';
$image = imagecreatefromstring(base64_decode($sourceString));
imagejpeg($image, $destination, 100);

В приведенном выше примере я подтвердил, что $ sourceString содержит то же самое точное содержимое, что и при жестком кодировании его в моем первом примере. Во втором примере я получаю следующие ошибки:

[09-Sep-2015 16:54:00 UTC] PHP Warning:  imagecreatefromstring(): gd-png:  fatal libpng error: Read Error: truncated data in request.image_paste.php on line 10
[09-Sep-2015 16:54:00 UTC] PHP Warning:  imagecreatefromstring(): gd-png error: setjmp returns error condition in request.image_paste.php on line 10
[09-Sep-2015 16:54:00 UTC] PHP Warning:  imagecreatefromstring(): Passed data is not in 'PNG' format in request.image_paste.php on line 10
[09-Sep-2015 16:54:00 UTC] PHP Warning:  imagecreatefromstring(): Couldn't create GD Image Stream out of Data in request.image_paste.php on line 10
[09-Sep-2015 16:54:00 UTC] PHP Warning:  imagejpeg() expects parameter 1 to be resource, boolean given in request.image_paste.php on line 11

Я не понимаю, что может быть не так. Я попытался привести переменную как строку:

$sourceString = (string)$_POST['data'];

Но это не помогло.

Кто-нибудь знает, что может быть не так?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …