Javascript PHP从base64数据创建图像已损坏
通过ajax请求从前端发布base64编码的图像数据字符串:Javascript PHP从base64数据创建图像已损坏,javascript,php,base64,Javascript,Php,Base64,通过ajax请求从前端发布base64编码的图像数据字符串: var req = { url: url, method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, data: 'data=' + data, // data=iVBORw0KGgoAAAAN... }; $http(req).then(...); 目标是一个php脚本: $data = $_P
var req = {
url: url,
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: 'data=' + data, // data=iVBORw0KGgoAAAAN...
};
$http(req).then(...);
目标是一个php脚本:
$data = $_POST['data'];
file_put_contents("tmp/".time().".png", $data);
但是,所有图像似乎都已损坏,尽管它们都具有正确的宽度和高度,但内容为零
我的问题是如何解决这个问题,从而获得正确的图像
- 我有一个base64编码的imagedata字符串
,其中ivborw0kggoaaan…
部分被剪切数据:(*)base64,
- 原始图像数据正常,直接从画布
canvas.toDataURL()获取
- PHP是必须的
};我发现问题应该是由于标题
应用程序/x-www-form-urlencoded
导致的,该标题将数据编码为url类型
在PHP端,需要首先对接收到的数据进行url解码
另一种解决方案是使用FormData
来避免标题
var formData = new FormData();
formData.append('data', data);
var req = {
url: url,
method: 'POST',
headers: { 'Content-Type': undefined },
processData: false,
contentType: false,
data: formData,
timeout: 5000,
};
$http(req)...
我发现问题应该是由于标题应用程序/x-www-form-urlencoded
,它将数据编码为url类型
在PHP端,需要首先对接收到的数据进行url解码
另一种解决方案是使用FormData
来避免标题
var formData = new FormData();
formData.append('data', data);
var req = {
url: url,
method: 'POST',
headers: { 'Content-Type': undefined },
processData: false,
contentType: false,
data: formData,
timeout: 5000,
};
$http(req)...
我想在数据传输过程中。数据有点变化。例如,…ggBYYgD7goE+Xxw…
将变成…ggBYYgD7goE Xxw…
可能这就是原因。但是我怎样才能修复它呢?你在php脚本中获得的数据,复制图像内容并粘贴。检查您是否能够看到图像什么是$http
?您正在使用JavaScript库吗?该库是否负责对请求后的有效负载进行编码?$http
是一个角度模块,我在两者之间的数据传输过程中计算得出。数据有点变化。例如,…ggBYYgD7goE+Xxw…
将变成…ggBYYgD7goE Xxw…
可能这就是原因。但是我怎样才能修复它呢?你在php脚本中获得的数据,复制图像内容并粘贴。检查您是否能够看到图像什么是$http
?您正在使用JavaScript库吗?该库负责对请求后有效负载进行编码吗?$http
是一个角度模块