【问题标题】:Saving image from a canvas with php使用 php 从画布中保存图像
【发布时间】:2014-02-16 19:27:05
【问题描述】:

我想将画布保存为 png。画布大小约为 2000x2000px,canvas.toDataURL() 返回 5.600.000 个字符 (700 KB)。当我尝试将其发送到服务器时,我收到 413 request entity too large 错误。 isn't ajax 帖子有任何大小限制。 In the server,LimitRequestBody 为 2 GB,超出我的需要,post_max_size 为 132M。
知道吗,为什么会出现此错误?
还是有更好的方法来保存图像?我使用fabric.js。我尝试用 php 绘制图像,但我遇到了很多问题。你知道有什么框架可以画出和fabric.js一样的吗?

【问题讨论】:

  • 假设您使用较小的文件测试了上传代码并且测试成功,请确保您已为 php 服务器配置了适当的上传限制:post_max_size、upload_max_filesize、max_execution_time。
  • post_max_size 超出了我的需要。 upload_max_filesize 不是必需的,我没有上传任何文件(但它是 2000M 大声笑)。 max_execution_time 是 60。是的,我用较小的图像对其进行了测试。当画布约为 750x750 时,效果很好,我可以保存图像。
  • 好的...您的上传目录是否设置为 tmp 目录以外的目录,并且该上传目录是否有足够的磁盘空间。您可能会尝试将 post_max_size 的大小减小到合理的值(可能是 16M)。您是否正在运行其他需要配置的组件(如 nginx)?实际上,在 stackoverflow 之类的论坛上诊断网络配置问题非常困难......
  • 5,600,000 个字符不是 700KB,而是 ~ 5.5MB,你是怎么计算出来的?

标签: javascript php ajax canvas fabricjs


【解决方案1】:

您可以转到 php.ini 文件并调整 max_post_lenght 的大小

【讨论】:

  • 没有这样的php配置变量。
【解决方案2】:

您没有访问服务器 php.ini 的权限,对吧?

尝试使用ini_set函数:

例如:

ini_set('post_max_size', '10M');
ini_set('upload_max_filesize', '10M');
ini_set('max_execution_time', 0);

或者尝试将.htaccess 文件放在与您的 .php 相同的目录中:

php_value upload_max_filesize 10M
php_value post_max_size 10M
php_value max_execution_time 0

请注意,max_execution_time 中的 0(零)是无限的。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 2013-03-02
    • 2013-03-11
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多