【发布时间】:2011-06-30 19:55:17
【问题描述】:
我有一个画布,你可以在上面画画。我需要将其内容保存到服务器,以便稍后恢复。
为此,我通过xMLHttpReq.open("POST", url, false);xMLHttpReq.send(*)encodeURIComponent(canvasP.toDataURL())*
在我的 php 脚本中,我使用 $_POST 和 base64_decode(json_decode($_POST[data])) 并将其保存到服务器上的 .png 文件中。
现在,如果画布上有一个小涂鸦,这会很好用。但是,如果 1600x1200px 画布上绘制了很多东西,并且大小约为 600kB,我的脚本就会失败,并且我的服务器上会得到一个 0kB 的 png。
我该如何解决这个问题?如何将大画布发送到服务器?
问题是 _POST 大小的限制吗?因为无论画布有多大,我都可以通过window.open(canvasP.toDataURL(), "blabla"); 下载。
这对我来说是个难题。任何帮助将不胜感激!
[编辑] PHP 只接收空的$_POST[data] 任何超过〜50-something kB...
所以问题必须发生在canvasP.toDataURL()和POST-ing之间......
[EDIT2] 浏览器说“正在上传...(xx%)”,直到它“完成”。那么数据去哪儿了? :C
[EDIT3] 这是应用程序,自己尝试一下(使用谷歌浏览器):http://students.info.uaic.ro/~tudor.berechet/
[EDIT4] Mike 对 suhosin 987654322@的回答似乎是正确的
【问题讨论】:
-
在 PHP 端失败的消息是什么?听起来像是脚本中的内存问题...
-
您服务器的
post_max_size是什么?发送到服务器的 URI 编码数据的实际大小是多少? -
我不知道如何检查服务器端的任何内容,因为我不拥有服务器并且除了 FTP 访问之外我无法控制它。 Sdleihssirhc,所以您是说服务器说明_Post 消息可以多长时间?我下载了 2 张图片,495kB 和 632kB,但在服务器上失败了。
-
您可能无法修改首选项,但您始终可以从 php 中读取它们:
ini_get('post_max_size') -
您需要尝试从 PHP 脚本中获得响应。一定会有一个响应体在某个地方。我敢打赌它包含 PHP 错误。
标签: php javascript html canvas http-post