我有一个svg文件正在生成dataURI-png,而且效果很好。我希望将dataURI保存为图像,因此我尝试通过ajax将dataURI发送到可以执行PHP的另一台服务器。但我无法让它工作。用php从dataURI生成png文件通过ajax发送
这是生成代码的dataURI(的作品)
var mySVG = document.querySelector('svg'), // Inline SVG element
tgtImage = document.querySelector('.tgtImage'); // Where to draw the result
can = document.createElement('canvas'), // Not shown on page
ctx = can.getContext('2d'),
loader = new Image; // Not shown on page
console.log(mySVG);
loader.width = can.width = tgtImage.width;
loader.height = can.height = tgtImage.height;
loader.onload = function(){
ctx.drawImage(loader, 0, 0, loader.width, loader.height);
tgtImage.src = can.toDataURL("image/png");
};
这是AJAX代码将其发送到外部的PHP服务器:
$.ajax({
type: "POST",
data: {id:'testID',datauri: can.toDataURL("image/png")},
crossDomain: true,
//dataType: "jsonp",
url: "https://urltoscript.php",
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
的PHP代码生成PNG
$dataUrl = $_REQUEST['datauri'];
$id = $_REQUEST['id'];
list($meta, $content) = explode(',', $dataUrl);
$content = base64_decode($content);
file_put_contents('./tmp-png/'.$id.'.png', $content);
当手动插入dataURI时,PNG生成工作。但它不适用于上面的ajax函数。
谢谢!
可能的重复:http://stackoverflow.com/questions/23980733/jquery-ajax-file-upload-php – user2182349
你可以改变'php'? – guest271314
是的。可以更改php –