使用PHP进行非常大的上传

Eve*_*ert 37 php upload large-files

我想允许将非常大的文件上传到我们的PHP应用程序中(数百个megs - 8演出).然而,这有几个问题.

浏览器:

  • HTML上传有蹩脚的反馈,我们需要轮询进度(这有点傻)或根本没有反馈
  • Flash上​​传器在开始上传之前将整个文件放入内存

服务器:

  • PHP强制我们设置post_max_size,这可能导致容易被攻击的DOS攻击.我不想全局设置此设置.
  • 服务器还需要在POST变量中存在一些其他变量,例如密钥.我们希望能够立即拒绝请求,而不是在整个文件上传后.

要求:

  • HTTP是必须的.
  • 只要它在浏览器中运行,我就可以灵活地使用客户端技术.
  • PHP不是必需的,如果有一些其他技术可以在Linux环境中运行良好,那就非常酷了.

Fra*_*mer 14

upload_max_filesize可以基于每个目录设置; post_max_size也是如此

例如:

<Directory /uploadpath/>
  php_value upload_max_filesize 10G
  php_value post_max_size 10G
</IfModule>
Run Code Online (Sandbox Code Playgroud)

  • 这是否意味着您实际上*需要*10G RAM在服务器上或这只是一个避免上传攻击/错误的设置? (6认同)

Aid*_*ell 7

Python处理程序?

使用Python POST处理程序而不是PHP.从PHP应用程序生成唯一标识符,客户端可以将该标识符放入HTTP标头中.使用mod_python在传输整个POST正文之前拒绝或接受大型上载.

我想 http://www.modpython.org/live/current/doc-html/dir-handlers-hph.html

允许您检查标题并拒绝POST输入的其余部分.我没试过,但可能是正确的道路?

查看mod_python的源代码,通过read()缓冲输入似乎允许对HTTP输入进行逐位评估.标题是第一位的.

https://svn.apache.org/repos/asf/quetzalcoatl/mod_python/trunk/src/filterobject.c


Fil*_*kor 7

我知道它已经老了,但也许有人现在也有这个问题.现在你可以只使用Javascript,比如说PHP.客户端不需要Flash或Java.

演示:http://dnduploader.filkor.org/

我们的想法是使用Javascript的Blob slice()方法对文件进行切片...


Mar*_*c W 3

Java 小程序怎么样?我以前工作过的一家公司就是这么做的。我知道小程序很糟糕,尤其是在当今时代,我们拥有所有可用的选项,但它们确实是解决 Web 开发中遇到的类似桌面问题的最通用的解决方案。只是需要考虑的事情。