Отправка переменной из js в php, странная ситуация encode64 в php? - PullRequest
0 голосов
/ 05 января 2012

У меня есть 2 файла screen.js и test.php.У меня есть этот простой PHP-код в test.php:

<?php
if (isset($_POST['img'])) {
$img = $_POST['img'];
$comma = strpos($img, ',');
$data = substr($img, $comma+1);
file_put_contents('MyFile.jpg', base64_decode($data));
}
?>

У меня есть 2 ситуации:

  1. Когда я отправляю через переменную ajax img, которая содержит файл jpg, какстрока base64 из screen.js в test.php скрипт сохраняет файл на стороне сервера, но я не могу его открыть.Я получил ошибку при открытии!: (

  2. Пока я отлаживаю screen.js, я знаю, что содержит переменная img. Когда я копирую и вставляю содержимое переменной img и сохраняю в test.php, как показано ниже, все в порядке.

    if (isset ($ _ POST ['img'])) {$ data2 = '/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMC...etc.'; File_put_contents ('MyFile.jpg', base64_decode $ ());}

Так что не так?

1 Ответ

1 голос
/ 05 января 2012

Данные в кодировке Base64 могут содержать символы +. Если вы отправляете данные как обычный URL-кодированный параметр, то php декодирует + в пространство, явно не то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...