2014-01-28 81 views
0

Basicaly我想找到一种方法来增加最大上传大小,我只是谈论wordpress,因为它恰好是我正在工作的平台,但我需要的是找到一种方法来绕过php设置作为WordPress的服务器似乎使用这些设置为默认。 请注意,我只是在上传图片,没有其他类型的文件。是否可以增加wordpress的最大上传大小?

我发现在谷歌几页解释或者如何编辑WordPress的设置(在我的情况下,这是不是会工作),或在服务器端更改PHP设置,我根本无法做到这一点。

我想到了一些方法来达到这个目标,但不知道从哪里开始,因为我不擅长图像处理。我正在考虑评估图片大小并将其分成几个文件(它是否可以在js中使用),然后将它们上传到服务器上,然后在php中进行组装(我可以这样做)。

你能告诉我你的想法吗?我不是要求任何人做这项工作,我只是寻找一个提示,或者只是让某人告诉我从哪里开始,或者在前端使用其他任何语言。

非常感谢。

回答

1

是的,当然可以通过JS将文件拆分成块,并单独检测这些文件。

  1. 声明文件输入字段:

    <input type="file" id="input"> 
    
  2. 访问的第一个文件(有可能是更多,如果使用多个属性):

    var selected_file = document.getElementById('input').files[0]; 
    
  3. 你现在有一个File对象,它也继承了Blob接口。因此,您可以拨打Blob.slice将数据拆分为块。

  4. 通过AJAX

    上传这些块
  5. 在服务器端再次合并块

进一步阅读:

https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications https://developer.mozilla.org/en-US/docs/Web/API/File https://developer.mozilla.org/en-US/docs/Web/API/Blob

+0

那么这看起来相当方便,并且Set Sail Media对于交叉兼容性和这可能会导致旧版浏览器的问题是正确的吗? 由于我对JavaScript不太熟悉,请问我会问,如果IE8用户试图上传文件会发生什么情况,他会在PHP流量控制中结束还是会触发错误? – bastienbot

+1

@bastienbot是的,他是对的。旧的浏览器不支持File API(参见[这里](http://caniuse.com/fileapi)的比较表)。使用这种浏览器的客户只会得到JS错误(“文件:未定义的标识符”),除非您执行检查是否支持File API。如果你使用后者,浏览器将处理该网站,就像它将包含一个正常的文件输入字段一样。 – ComFreek

+0

非常感谢,这完全回答了我的所有问题!关我现在编码,欢呼! – bastienbot

1

限制是在服务器级别。

您必须调整您的服务器配置才能涓流到WordPress。

如果您将WordPress配置设置为最大40MB,并且Apache(或其他Web服务器软件)仍然具有2MB的限制,则您将永远无法发布超过2MB的内容。

一个选择是使用基于Flash的上传工具,该工具可以在上传之前执行一些预处理来缩小图像尺寸。

如果你真的想要花哨,你可以开发自己的基于Flash的上传工具,将上传块分成2MB的部分(或者你的服务器的最大发布大小)和一些服务器端脚本来重新组装,就像互联网与数据包一样。

+0

你甚至不需要Flash用于此任务。任何现代浏览器也支持File API(参考我的答案)。 – ComFreek

+0

是的,嗯......这是我认为可以工作,所以它只能在Flash中工作或isit可能在JavaScript中分割图像? – bastienbot

+0

@ComFreek“现代浏览器”翻译为“我不关心我的IE7,IE8,IE9用户”。您的解决方案是一个很好的解决方案 - 但前提是OP不针对任何旧浏览器开发。 –