`

使用PHP处理POST上传时$_FILES数组为何为空

阅读更多

      在做一个简单的表单上传测试时,服务端的php脚本中,$_FILES数组为空;这样就不能获取从浏览器上传的信息.什么原因呢?

      通过Google,找到下面这个web:

      php上传文件$_FILES数组为空的解决办法


      在测试时遇到的情况,属于文中描述的第一种原因,即:上传文件的表单中未设置属性 enctype="multipart/form-data".

      下面对其全文转贴于下:


php上传文件$_FILES数组为空的解决办法:
用php做上传文件的应用时,在后台打印$_FILES时发现为空数组,出现这个问题可能有以下两个原因:
表单类型原因或者php设置问题:
1,表单类型:
上传文件的表单编码类型必须设置成 enctype="multipart/form-data",因为要传大数据,一般提交方式用POST。

2,php设置问题:

php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES 超全局变量便会为空. 解决的方法是:
1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完. 但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行. 这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time 在php.ini里查找 max_execution_time 默认是30秒.改为 max_execution_time = 0(可修改范围为PHP_INI_ALL) 0表示没有限制
或者在php文件头设置ini_set('max_execution_time',0);
2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。 查找 post_max_size .改为 post_max_size = 150M(可修改范围为PHP_INI_PHP_INI_PERDIR)
3. 很多人都会改了第二步.但上传文件时最大仍然为 8M. 为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。 查找upload_max_filesize,默认为8M改为 upload_max_filesize = 100M(可修改范围为PHP_INI_PHP_INI_PERDIR)
另外要说明的是post_max_size是整个表达的大小,而upload_max_filesize是上传文件的大小,前者应大于后者.

分享到:
评论

相关推荐

    浅谈$_FILES数组为空的原因

    当我们在尝试上传文件时,如果发现$_FILES数组始终为空,这通常意味着存在某些配置问题或者错误的操作导致文件上传失败。本文将深入探讨可能导致$_FILES数组为空的原因,并提供相应的解决方案。 首先,我们要了解...

    PHP上传文件时文件过大$_FILES为空的解决方法

    这篇文章详细介绍了在PHP中处理文件上传时,如何解决因上传文件过大导致$_FILES数组为空的问题。 首先需要了解的是PHP的全局数组$_FILES,它在文件上传时被用来接收上传文件的信息。如果在文件上传后发现$_FILES...

    php 图片上传($_FILES)

    `$_FILES`是一个全局数组,专门用于处理通过HTTP POST方式上传的文件。在开始深入探讨之前,我们需要了解`$_FILES`数组的结构。 `$_FILES`数组的结构如下: 1. `$_FILES['file']`['name'] - 上传文件的原始名称。 2...

    PHP中$_FILES的使用方法及注意事项说明

    使用$_FILES进行文件上传是Web开发中的常见操作,本篇文章将详细介绍$_FILES数组的使用方法及其注意事项。 首先,$_FILES数组的结构包含了关于上传文件的各个方面的信息,具体包含以下几项: 1. $_FILES['myFile']...

    解析PHP中$_FILES的使用以及注意事项

    1. 在PHP4.1.0版本之前,处理文件上传的数组名为$HTTP_POST_FILES,而$_FILES数组在PHP4.1.0版本后引入,且是自动全局变量。 2. PHP3不支持$HTTP_POST_FILES数组,因此在老旧代码升级时需要注意兼容问题。 3. 在脚本...

    PHP预定义超全局数组变量小结

    这组超全局变量包括$_SERVER、$_ENV、$_GET、$_POST、$_REQUEST、$_FILES、$_COOKIE、$_SESSION以及$GLOBALS。 1. $_SERVER数组:它包含了诸如请求头、路径和脚本位置等服务器和执行环境的信息。通过遍历$_SERVER...

    PHP $_FILES函数详解

    当用户通过HTML表单中的`<input type="file">`字段提交文件时,服务器端的PHP脚本可以通过`$_FILES`数组来访问和处理这些文件。让我们深入探讨`$_FILES`函数的工作原理和各个元素。 首先,创建一个用于文件上传的...

    PHP5内置数组与常量资料

    6. **$_FILES**: 用于处理HTTP POST方式上传的文件,提供了关于上传文件的信息。 7. **$_ENV**: 包含了环境变量,这些变量由操作系统提供。 8. **$_REQUEST**: 一个综合数组,包含了GET、POST和COOKIE数据,方便统一...

    php表单提交与$_POST实例分析

    需要注意的是,文件上传功能通常使用元素,并且在处理文件上传时,PHP还会有其他全局数组$_FILES来专门处理文件信息。在这个实例中,文件上传的部分被注释掉了。 当表单数据通过POST方法提交到"b.php"后,PHP脚本...

    php学习笔记 [预定义数组(超全局数组)]

    4. $_FILES数组:当使用POST方法上传文件时,该数组包含所有上传文件的信息。 5. $_COOKIE数组:包含所有通过Cookie传递给当前脚本的变量。 6. $_SESSION数组:这个数组不是自动获取数据的,而是需要开发者通过...

    php_sql.zip_Known_c php post_json文件转换_php 数组 转 sql

    将数组,HTML,XML或JSON文件转换为SQL语法。 使用 ======================== - SELECT *FROM myArray ORDER BY key DESC,value ASC, - SELECT key,value FROM myArray WHERE value= 100 , - SELECT * FROM json_...

    php多文件上传源码(wordpptExcel等)

    2. **处理$_FILES数组**: - `$_FILES['filename']['name']`获取文件的原始名称。 - `$_FILES['filename']['type']`获取文件的MIME类型,但这个值可能不可靠,因为可以通过客户端篡改。 - `$_FILES['filename']['...

    php一次上传多个文件,多文件上传功能.zip

    处理多文件上传,我们需要遍历`$_FILES['files']['name']`数组,对每个文件进行操作。以下是一个简单的示例: ```php if(isset($_FILES['files']) && count($_FILES['files']['name']) > 0) { foreach($_FILES['...

    PHP中uploaded_files函数使用方法详解

    使用is_uploaded_file()和move_uploaded_file()来检查和处理上传文件,可以有效避免安全风险,同时也要意识到直接操作$_FILES数组可能带来的风险。对于开发者而言,了解并正确使用PHP内置的文件上传机制,不仅可以...

    PHP上传多个文件

    这段代码通过循环遍历`$_FILES['files']`数组,逐个处理每个上传的文件。如果上传过程中发生错误,它将返回相应的错误消息。成功上传的文件会被移动到指定的`$upload_dir`,并显示上传成功的消息。 此外,我们还...

    HTTP_POST_PHP.rar_HTTP PHP_http post_http 服务端_http服务器_php http

    在服务器端,PHP接收到POST请求后,可以访问通过`$_POST`全局数组接收表单数据,但处理文件上传时,需要使用`$_FILES`全局数组。PHP的`move_uploaded_file()`函数用于将上传的文件移动到服务器上的指定位置,以确保...

Global site tag (gtag.js) - Google Analytics