【问题标题】:Posting variable from js to php, strange encode64 situation in php?将变量从 js 发布到 php,php 中奇怪的 encode64 情况?
【发布时间】:2012-01-05 10:24:31
【问题描述】:

我有 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...等'; file_put_contents('MyFile.jpg', base64_decode($data2)); }

那怎么了?

【问题讨论】:

  • 可能,完整的编码字符串没有被传输,您是否检查了 AJAX 发送并复制粘贴的字符串的长度?它们是一样的吗?
  • 是的,我检查它的长度相同,我没有注意到任何差异。

标签: php string


【解决方案1】:

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

【讨论】:

  • 所以解码后我应该用字符串替换 + 到空格,一切都应该没问题?
  • 在进行 base64 解码之前,您需要将空格替换为 +
  • 是的,我知道现在一切正常:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 2017-04-26
  • 2016-04-19
  • 2015-09-25
  • 1970-01-01
相关资源
最近更新 更多