从js发布变量到php,php中奇怪的encode64情况?

时间:2012-01-05 10:24:31

标签: php string

我有2个文件screen.js和test.php。 我在test.php中有这个简单的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));
}
?>

我有两种情况:

  1. 当我通过包含jpg文件的ajax img变量发送时,从screen.js到test.php的字符串base64,脚本在服务器端保存文件,但我无法打开它。打开时出错! :(

  2. 当我调试screen.js时,我知道img变量包含什么。当我复制并粘贴img变量的内容并保存到test.php中时,每个都可以。

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

  3. 那有什么不对?

1 个答案:

答案 0 :(得分:1)

Base64编码数据可能包含+符号。如果您将数据作为普通的URL编码参数发送,那么php会将+解码为一个显然不是您想要的空间。