请先看下我的demo代码:
上传文件的HTML代码:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>表单</title>
</head>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="myfile">File:</label>
<!--通过隐藏域控制上传文件的大小(单位是字节),该值不能超过php.ini配置文件中upload_max_filesize选项设置的值(php.ini默认值为2M)-->
<input type="hidden" name="MAX_FILE_SIZE" value="10485760"/>
<input type="file" name="myfile"><br/><!--此处设置所要上传文件的文件的键名为myfile(即键值对),在服务器端根据'myfile'接收此文件-->
<input type="submit" name="submit" value="上传"/>
</form>
</body>
</html>
接收上传文件的php代码:
<?php
header("content-type:text/html;charset=utf-8");
if($_FILES['myfile']['error'] > 0){
echo "Error:".$_FILES['myfile']['error'];
}else{
$myfile = $_FILES['myfile'];
var_dump($myfile);//使用var_dump方法先来打印出来我们获取到的这个文件具体信息
echo "<br/>";
echo "文件名:".$myfile['name']."<br/>";
echo "文件格式:".$myfile['type']."<br/>";
echo "文件缓存路径:".$myfile['tmp_name']."<br/>";
echo "文件大小:".$myfile['size']."<br/>";
echo "文件上传错误:".$myfile['error']."<br/>";
//将获取到的文件从缓存路径移动到指定目录下,这里是源文件同级目录下的upload文件夹下(upload文件夹先得建好,不然会因为找不到此路径而出错的)
move_uploaded_file($myfile['tmp_name'],"upload/".$myfile['name']);
}
?>
我的php.ini-dist配置文件相关信息:
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
memory_limit = 128M      ; Maximum amount of memory a script may consume (128M)
; Maximum size of POST data that PHP will accept.
post_max_size = 8M
我现在可以上传几百kb、几兆、十几兆的文件,这些都可以上传成功。当我上传八百多兆的文件时,显示什么也没接收到,显示结果如下:
NULL 
文件名:
文件格式:
文件缓存路径:
文件大小:
文件上传错误:
我的问题:
①html中的隐藏域<input type="hidden" name="MAX_FILE_SIZE" value="10485760"/>、upload_max_filesize = 2M、memory_limit = 128M 、post_max_size = 8M这几个配置中到底哪个是控制上传文件大小限制的啊?
②为啥最后我上传八百多兆的文件时,显示什么也没接收到啊?不是至少应该有个错误码的吗?
(我使用的php开发环境appserv一键安装包下载地址:http://pan.baidu.com/s/1c0uBsmW)

解决方案 »

  1.   

    你确认你提供了正确的情况吗?
    内存使用设置原则
    memory_limit >= post_max_size >= upload_max_filesize >= 待上传的文件你的配置是
    memory_limit = 128M
    post_max_size = 8M
    upload_max_filesize = 2M
    只能上传不大于 2M 的文件环境设置只是约定了可能的上限,在运行时通常是到达不了的
    你八百多兆的文件早就超过允许 php 使用的 128M 内存了。php 都无法工作了,哪来的错误信息给你?
      

  2.   

    给创业者送上祝福吧.
    http://detail.koudaitong.com/show/goods?alias=17j46lf4h
    景安云虚拟主机BGP多线空间国内3G/5G免费ASP/PHP送数据库正品官网地址:http://www.zzidc.com/