【问题标题】:Laravel - Uploading multiple images for a single request doesn't work well on shared hostLaravel - 为单个请求上传多个图像在共享主机上效果不佳
【发布时间】:2019-02-13 19:07:17
【问题描述】:

我为单个请求上传超过 12 个图像文件,但在线服务器拒绝上传这些图像。在我的本地机器上它工作正常,我可以一次上传 20 多张图片。我在本地机器服务器和在线服务器上都在 php.ini 中配置了 max_file_uploads = 60、upload_max_filesize=100M、post_max_size = 125M 的 PHP 设置。虽然发送页面加载未完成,并且在很长一段时间后它最终以网络协议错误响应,它表示:

“连接到 www.mydomain.com 时出错。由于检测到网络协议错误,无法显示您尝试查看的页面。”

查看我在多次尝试后也得到的其他不同错误响应的屏幕截图,发送后仍然需要很长时间才能获得这些响应。

我上传的图片保存在服务器上,但不是全部。当我为单个请求上传 20 张图片时,它只能获得 8 或 10 张,有时最后一张图片在完全上传之前被剪短(中断),请参见下面的图片。

我需要像在本地机器上一样获取我上传的所有图像,并快速响应。我还能为 PHP 或其他地方的配置做些什么?共享主机服务器出了什么问题?请,如果您对此有任何答案,可以告诉我我能做些什么,以快速响应所有上传的图像文件。

【问题讨论】:

  • 您收到的错误消息非常清楚 - 您的主机有 6 分钟(360 秒)的限制来完成请求。上传图片可能需要更长的时间。这可能是您的连接、他们的连接,或者只是非常大的文件。他们不太可能愿意取消限制,因此请考虑单独上传文件(可能通过 AJAX)或类似的方式。
  • 谢谢@ceejayoz,你是什么意思通过AJAX单独上传文件,你能给我一个例子或一个链接来了解它是如何为多个图像完成的吗?

标签: php laravel server image-uploading shared-hosting


【解决方案1】:

这显然是因为超时错误。一个请求发送多个文件是不可接受的。即使您现在就可以使用它,它也会不时出现故障,具体取决于用户连接速度和文件大小。您还提到了快速响应。所以你肯定需要使用ajax上传来同时上传文件。有dropzone等多个上传库。

【讨论】:

  • 我正在使用 Ajax 上传,并且在上传到服务器之前将每个图像转换为 base64。我的代码完成了 Ajax 库可以为我做的事情,这就是我没有使用它的原因。太棒了!如果这个问题不容易解决,我会尝试 dropzone 看看是否有帮助
  • 一个请求发送多个文件是完全可以接受的。如果他们上传 500 张 1x1 的小图像,OP 可能不会有任何问题。如果 single 文件足够大并且连接速度足够慢以至于上传时间超过 360 秒,OP 也会遇到同样的问题。
  • 是的,可能有 500 张小图像。但是当用户尝试上传多个图像时,他正在谈论真实世界的用例,例如个人资料图片。你会看到他在 6 分钟后暂停。因此,可以肯定的是,这里不会出现小图像。
  • 什么? 3倍以上?我不知道这个。我正在转换为 base64,因为我还需要使用 jQuery UI 更改图像的位置来对它们进行排序,并且我需要稍后编辑这些上传的图像
  • @Hervera 这不是 3 倍的大小。 base64 增加了 33% 的开销。阿拉什错在那里。见en.wikipedia.org/wiki/Base64#Output_padding。 “输出字节与输入字节的比率为 4:3(33% 开销)。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 2013-07-03
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 2018-11-14
相关资源
最近更新 更多