XMLHttpRequest POST到PHP删除加号
XMLHttpRequest POST to PHP removes plus-signs
我使用将HTML5画布元素中的JPEG文件作为字符串发布到PHP
function createJPG() {
var dataUrl = document.getElementById('canvas').childNodes[4].toDataURL("image/jpeg");
console.log(dataUrl);
var params = "theimage=" + dataUrl;
var http = new XMLHttpRequest();
http.open("POST", "/avatar/php/save-avatar.php", true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send(params);
}
一切都很好,dataUrl是正确的(在控制台中),并且包含一个有效的JPEG文件。但是当我用PHP检索它时,所有的加号都被空格取代了?
PHP代码:
$name = "image.jpg";
$data=$_POST['theimage'];
file_put_contents($name, base64_decode(substr($data, strpos($data, ",")+1)));
file_put_contents("../images/avatars/uploads/generated" . rand(0,200) . ".txt", $data);
我使用文本文件来查看数据的样子,因为我不想知道如何回显到JS:)。文本文件包含与JS控制台日志完全相同的数据,但没有+,而是带有空格,这导致JPEG文件损坏。
我该怎么办?
它不会删除它们。+
在application/x-www-form-urlencoded
数据中的意思是"一个空间"。因此,当在服务器上对URI进行解码时,它们会被转换为空格。
由于总是获取一些数据并将其放入URL,因此需要对其进行编码:
var params = "theimage=" + encodeURIComponent(dataUrl);
您应该对数据进行URL编码Url:
var params = "theimage=" + urlencode(dataUrl);
相关文章:
- 使用php或javascript从facebook相册URL中删除多余的部分
- php httponly cookie在浏览器关闭时被删除
- 如何删除在PHP中打印网页时显示的URL
- PHP 删除错误
- 如何在文件托管站点上使用 PHP 删除目录中的文件
- 在PHP的注释-回复系统中删除某个注释
- 使用php中的单选按钮从MS SQL SERVER中删除行
- 使用PHP删除换行符
- php使用ajax生成html表,以应用用户操作,如删除、更新和编辑
- 无需点击php即可确认记录删除
- 删除PHP中的换行符和换行符
- 删除php数组中的空值
- 如何使用 AJAX 删除 PHP $_SESSION
- Jquery 从字符串中删除 php 代码
- 如何删除php中的数组到字符串转换错误
- 在特定的时间间隔后删除php/javascript中的警告栏
- 删除PHP中JSON数组的索引,创建字符串版本的索引
- 删除PHP中使用JavaScript添加的空格
- 删除PHP邮件发送头
- 删除PHP中所有真实的Javascript注释