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

在做一个简单的表单上传测试时,服务端的PHP脚本中,$_FILES 数组为空;这样就不能获取从浏览器上传的信息.什么原因呢? 
通过Google,找到下面这个 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是上传文件的大小,前者应大于后者.

http://blog.csdn.net/x356982611/article/details/55804583

时间: 2024-08-07 12:42:08

使用PHP处理POST上传时$_FILES数组为何为空的相关文章

PHP上传文件时无法上传成功,$_FILES['screenshot']['tmp_name']为空

最近在学习<HeadFirst PHP & MySQL>一书的第5章"使用存储在文件中的数据",做一个文件上传的应用时,出现了错误,就是文件无法成功上传.这个问题困扰了我很久,不过还好最后终于解决了.原因是我上传的图片文件大小超过了HTML 表单中 MAX_FILE_SIZE 选项指定的值32768Bytes即32KB导致无法上传成功. 我使用了XAMPP(Apache + MySQL + PHP + Perl)集成开发包和Zend Studio 10.6作为PHP

php 上传文件 $_FILES[&#39;&#39;][&#39;type&#39;]的值

php 上传文件 $_FILES['']['type']的值 一个函数 function upload_file($fname,$ftype,$fsize,$ferror,$ftmp_name,$fpath){ date_default_timezone_set('PRC'); $store_nm = date("YmdHis") . "-" . rand(10000,99999) . "-". strlen($fname)."-$fn

php文件上传之$_FILES全局变量用法介绍

我们来看看files的变量的用法 $_FILES超级全局变量很特殊,他是预定义超级全局数组中唯一的二维数组.其作用是存储各种与上传文件有关的信息,这些信息对于通过PHP脚本上传到服务器的文件至关重要.此函数中总共有5项:1.$_FILES["userfile"]["error"]$_FILES["userfile"]["error"]数组值提供了与上传尝试结果有关的重要信息.总共有5个不同的返回值,其中一个表示成功的结果,另外

php curl上传文件$_FILES为空问题

php使用curl上传文件,代码如下: 发送的代码(完全是官方的示例) <?php /* http://localhost/upload.php:print_r($_POST);print_r($_FILES);*/ $ch = curl_init(); $data = array('name' => 'Foo', 'file' => '@/home/vagrant/test.png'); curl_setopt($ch, CURLOPT_URL, 'http://localhost/t

精简点名版本2App Store上传时遇到的问题

精简点名版本2App Store上传时遇到的问题 遇到这个问题主要是由于,你以前提交过一个个build version2的版本,所以冲突不能再提交了.如果想提交把build version换一个比如改成2.1,然后打包提交久可以了.

图片上传时遇到的问题

今天在用ssm框架做图片上传的时候遇见一个问题: 后来检查发现是springMVC配置文件中遗漏了关于图片上传的配置文件 把上面的<bean>配置好就可以了: 顺便总结一下: 图片上传只需要记住三件事: 前台页面:(1)要用post请求:(2)别忘了在form表单中加入enctype="multipart/form-data" 后台controller层要这样写: 3.如果上面代码没问题,就检查一下springmvc配置文件;

关于我使用spring mvc框架做文件上传时遇到的问题

非常感谢作者 原文:https://blog.csdn.net/lingirl/article/details/1714806 昨天尝试着用spring mvc框架做文件上传,犯了挺多不该犯的毛病问题1:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: org.apache.catalin

JAVA判断上传表单中file是否为空

<form action="update.do"method="post" enctype="multipart/form-data" > 文件上传:<input name="myfile" type="file"><br> <input type="submit" value="上传"> </form> M

thinkphp 单图上传组建成数组然后追加到一个字段

//上传的数组字段 $note1 = input('note1'); $note2 = input('note2'); $note3 = input('note3'); $note4 = input('note4'); //判断图片是否上传 $imgs=[]; if($note1) array_push($imgs,$note1); if($note2) array_push($imgs,$note2); if($note3) array_push($imgs,$note3); if($note