连续图片上传而不依赖于max_execution_time?

时间:2013-05-10 14:54:08

标签: php image file-upload

我们正在开发一个用户可以更改其滑块图像的网站。 (全屏滑块)每张图片大约为2000px到2000px,我们允许用户在我们的HTML表单中上传尽可能多的图像(上限为10)。

他们的上传速度非常慢,我相信我们可以轻松传递PHP的max_execution_time,默认为30秒。我们还将允许用户上传一些.rar / .zip文件,将来上限为100MB。

我们的想法很少,但我想要求SO寻求更好的解决方案/评论。

  1. 我们可以更改30秒以获得更高的价值,因为我们可以访问PHP.ini并允许用户一次上传所有图像,但这可能会长期产生与性能相关的问题。 (这不是一个选项!)
  2. 我们可以在客户端大小中使用javascript。以HTML格式指定的Foreach图像路径,javascript可以逐个发布XMLHttpRequest并期望响应。如果响应为真,则javascript移动到下一个图像并尝试上传它。 (利润:每个图像都将启动php本身并获得自己30秒的生命周期。)
  3. 当文件超过50MB时,Javascript解决方案无法在文件上传中工作。客户通常在目标区域以25kbps的上传速度上限,因此他们无法在30秒内上传50MB。与#2类似,我们可以使用一个脚本,其中上传文件每30秒以字节为单位保存,客户端继续推送剩余字节或类似内容。
  4. 基本上,你将如何完成这项任务? 我们不想依赖PHP.ini,因此增加max_execution_time不应该是一个选项。

    我们应该使用#2进行图片上传吗?您能为#3建议什么?

1 个答案:

答案 0 :(得分:2)

查看分块上传内容。

您需要使用某种类型的上传器脚本,例如JUploadplUpload。您可以指定应将文件块发送到服务器的大小。例如,如果您有一个10MB的文件,则可以将其分块为1MB,因此将10个1MB的块上传到服务器。在连接速度较慢的情况下,只需将块大小缩小为500KB。