Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将大量画布图像保存到服务器_Javascript_Html_Html5 Canvas - Fatal编程技术网

Javascript 将大量画布图像保存到服务器

Javascript 将大量画布图像保存到服务器,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,我有一个脚本,可以从canvas.toDataURL()生成大约250个图像。 我的问题是如何一次保存它们(向服务器发送一个请求),而不是单独发布它们 我需要一种方法将它们打包到单个请求中,然后将它们发送到PHP服务器进行解包。canvas.toDataURL()提供以base64编码的字节数据,它们可以安全地用作字符串并通过HTTP传递 做一些类似于: var images = []; while(....) { images.push(canvas.toDataURL()); } v

我有一个脚本,可以从
canvas.toDataURL()
生成大约250个图像。 我的问题是如何一次保存它们(向服务器发送一个请求),而不是单独发布它们

我需要一种方法将它们打包到单个请求中,然后将它们发送到PHP服务器进行解包。

canvas.toDataURL()提供以base64编码的字节数据,它们可以安全地用作字符串并通过HTTP传递

做一些类似于:

var images = [];
while(....) {
    images.push(canvas.toDataURL());
}
var imagesJson = JSON.stringify(images);
// pseudo code of jQuery ajax, you can make use of form and a hidden field 
// or any other way you'd like to query the server
$.ajax({
....
send:{images:imagesJson}
....
});
对于PHP(其他服务器端语言应该几乎相同):

$images=json\u decode($\u POST['images'],true);
foreach($images作为$image){
$image=base64_解码($image);
文件内容(“”,$image);
}

您可能编写的任何代码。请告诉我们!非常感谢。这对我帮助很大。@TwilightSun:说起来容易,配置和运行起来更难!在您的PHP示例中,对于250张照片,提问者将遇到默认的上载最大文件大小和发布最大文件大小限制,除非图像大小约为90x90px。此外,它们可能会达到默认的最大执行时间限制。如果这些配置和其他配置不正确,PHP将无声地失败(加剧)。@markE会,考虑到这些,我所能想到的就是使用web套接字而不是POST,但是我更喜欢多个POST查询,而不是web套接字。一点也不……答案是正确的。IMHO,当向有Hi-guys的人解释网络操作时。我想问一下,将图片上传到服务器的最佳方式是什么,但是@markE已经开始讨论了。图像大小为320x240,有时脚本会给出php错误或错误500。我想到nodejs和socket.io,但我认为这并不是最好的选择,因为站点和socket.io服务器之间的集成将很困难。
$images = json_decode($_POST['images'], true);
foreach($images as $image) {
    $image = base64_decode($image);
    file_put_contents('<path to file>', $image);
}