当前位置: 首页 > 面试题库 >

PHP-空的$ _POST和$ _FILES-上传较大的文件时

章飞章
2023-03-14
问题内容

我有以下问题,我有HTML表单,该表单上载了一些其他信息。但是它只允许上传小于10MB的文件。但是,当用户尝试上传更大的内容时,$ _ POST和$
_FILES数组都为空(我希望$ _POST将具有一些值,而$ _FILES将具有一些值,但会指示存在上传错误)。

像这样有几个问题(空的$ _POST,$ _ FILES),但是我没有找到任何解决方案或解释。

HTML形式:

<form enctype="multipart/form-data" method="post" action="upload.php">
    <p>
        <input type="hidden" name="MAX_FILE_SIZE" value="10000000" />
        <input type="file" name="image"  />
    </p>
    <p>
        <input type="text" name="other_field" />
    </p>
</form>

upload.php

print_r($_POST);  // array()
print_r($_FILES); // array()
exit;

如果文件大小小于10MB(文件大小限制为10MB),并且我不想增加它,我只想捕获PHP中的错误,它就可以正常工作。

从PHP网站更新(说明/解决方案)

从PHP网站(我错过了本节):http : //us.php.net/manual/zh/ini.core.php#ini.post-max-
size

设置允许的帖子数据的最大大小。此设置还会影响文件上传。要上传大文件,此值必须大于upload_max_filesize。如果您的配置脚本启用了内存限制,则memory_limit也将影响文件上传。一般而言,memory_limit应该大于post_max_size。使用整数时,该值以字节为单位。也可以使用本常见问题解答中所述的速记符号。如果发布数据的大小大于post_max_size,则$
_POST和$ _FILES超全局变量为空。这可以通过各种方式进行跟踪,例如,通过将$ _GET变量传递给处理数据的脚本,即,然后检查是否设置了$ _GET
[‘processed’]。


问题答案:

如已编辑的问题中所述,当PHP静默丢弃数据时,$ _ POST和$ _FILES为空(当实际数据大于post_max_size时发生)。由于HTTP标头和$
_GET保持不变,因此可以将其用于检测丢弃。

选项a)

if(intval($_SERVER['CONTENT_LENGTH'])>0 && count($_POST)===0){
    throw new Exception('PHP discarded POST data because of request exceeding post_max_size.');
}

选项b)
添加一个GET参数,该参数指示POST数据是否存在。



 类似资料:
  • 我想将文件上载到服务器,但数组似乎为空。 我下面的代码有问题吗? PHP代码 Print_r($_FILES['fotos'])向我展示了这个:数组([name]=

  • 问题内容: 我在Windows 7计算机上安装了WampServer 2。我正在使用Apache 2.2.11和PHP 5.2.11。当我尝试从表单上传任何文件时,似乎都在上传,但是在PHP中,数组为空。文件夹中没有文件。我已配置为允许文件上传等。该文件夹具有当前用户的读/写特权。我很沮丧 HTML: PHP: 问题答案: 谢谢大家的全面答复。这些都非常有帮助。答案很奇怪。事实证明,PHP 5.2

  • 本文向大家介绍功能强大的php文件上传类,包括了功能强大的php文件上传类的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了php文件上传类,功能很强大,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍PHP实现文件上传和多文件上传,包括了PHP实现文件上传和多文件上传的使用技巧和注意事项,需要的朋友参考一下 在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一。值得高兴的是,在PHP中实现文件上传功能要比在Java、C#等语言中简单得多。下面我们结合具体的代码实例来详细介绍如何通过PHP实现文件上传和多文件上传功能。 要使用PHP实现文件上传功能,

  • 问题内容: 我想允许将非常大的文件上传到我们的PHP应用程序中(数百兆-8演出)。但是,这有两个问题。 浏览器: HTML上载的反馈很糟糕,我们需要轮询进度(这有点愚蠢)或根本不显示反馈 Flash Uploader在开始上传之前将整个文件放入内存 服务器: PHP强制我们设置post_max_size,这可能导致容易利用的DOS攻击。我不想全局设置此设置。 服务器还要求POST变量中包含一些其他

  • 问题内容: 我用PHP创建了一个上传页面,但是我不知道为什么该页面不会上传大于500MB的文档,这是我第一次尝试上传较大的内容,因此我更改了PHP.INI中的所有配置(post_max_size = 700M ,upload_max_filesize = 600M和max_execution_time = 300)。上传代码如下 我需要帮助,我想知道是否有某些事情做对了。 问题答案: 您认为增加上