PHP上传文件超过文件最大限制罗致无法上传成功
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP上传文件超过文件最大限制罗致无法上传成功,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3366字,纯文字阅读大概需要5分钟。
内容图文
![PHP上传文件超过文件最大限制罗致无法上传成功](/upload/InfoBanner/zyjiaocheng/229/01395671120e4198b4ddb3b5cc1542e2.jpg)
最近在学习《HeadFirst PHP & MySQL》一书的第5章“使用存储在文件中的数据”,做一个文件上传的应用时,出现了错误,就是文件无法成功上传。这个问题困扰了我很久,不过还好最后终于解决了。原因是我上传的图片文件大小超过了HTML 表单中MAX_FILE_SIZE 选项指定的值32768Bytes即32KB导致无法上传成功。
我使用了XAMPP(Apache + MySQL + PHP + Perl)集成开发包和Zend Studio 10.6作为PHP IDE开发环境,另外关于PHP调试我采用了XDebug,在Zend Studio10.6中配置Xdebug的PHP调试环境我参考了博文Zend Studio 10.5 与 XDebug 调试| Zend Debugger 说明 Drupal 源代码 (一)一文。
相应的文件上传示例PHP代码addscore.php如下:
Guitar Wars - Add Your High Score Guitar Wars - Add Your High Score
Thanks for adding your new high score!'; echo 'Name: ' . $name . '
'; echo '
'; echo 'Score: ' . $score; echo '<< Back to high scores
'; // Clear the score data to clear the form $name = ""; $score = ""; $screenshot = ""; mysqli_close($dbc); } } else { echo 'Please enter all of the information to add your high score.
'; } }?>
在使用Zend Sutdio10.6设置断点并调试上面这段PHP代码时我发现“if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {”这行代码里面的代码块没有执行,于是查看了超全局变量$_FILES['screenshot']['tmp_name']的值为空,然后我在这行代码前以JSON格式打印出$_FILES变量的值,如下:
{"screenshot":{"name":"Penguins.jpg","type":"","tmp_name":"","error":2,"size":0}}
相应的运行截图如下:
然后我查询$_FILES['screenshot']['error']为2,上网查询了一下,关于$_FILES超级全局变量的介绍大体如下:
PHP编程语言中的常见的$_FILES系统函数用法有:$_FILES['myFile']['name'] 显示客户端文件的原名称。$_FILES['myFile']['type'] 文件的 MIME 类型,例如"image/gif"。$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。$_FILES['myFile']['tmp_name'] 储存的临时文件名,一般是系统默认。$_FILES['myFile']['error'] 该文件上传相关的错误代码。以下为不同代码代表的意思:0:文件上传成功。1:超过了文件大小php.ini中即系统设定的大小。2:超过了文件大小MAX_FILE_SIZE 选项指定的值。3;:文件只有部分被上传。4:没有文件被上传。5:上传文件大小为0。
另外,查询PHP参考手册关于move_uploaded_file函数的介绍如下:
move_uploaded_file(PHP 4 >= 4.0.3, PHP 5)move_uploaded_file — 将上传的文件移动到新位置说明bool move_uploaded_file ( string $filename , string $destination )本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。 这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。 参数filename上传的文件的文件名。 destination移动文件到这个位置。 返回值成功时返回 TRUE。 如果 filename 不是合法的上传文件,不会出现任何操作, move_uploaded_file() 将返回 FALSE。 如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作, move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。
范例
Example #1 Uploading multiple files
$error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; $name = $_FILES["pictures"]["name"][$key]; move_uploaded_file($tmp_name, "$uploads_dir/$name"); }}?>原因终于找到了,是因为我上传了一个超过32768Bytes即32KB大小的Penguins.jpg文件导致出现$_FILES['screenshot']['error']为2的错误,并且$_FILES['screenshot']['tmp_name']为空,move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)函数调用时返回FALSE,if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {
...
}代码块没有执行。
内容总结
以上是互联网集市为您收集整理的PHP上传文件超过文件最大限制罗致无法上传成功全部内容,希望文章能够帮你解决PHP上传文件超过文件最大限制罗致无法上传成功所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。