php进行文件上传的格式:
1,上传界面
<form action="upload.php" method="post" enctype="multipart/form-data">
<label for="file">文件名:</label>
<input type="file" name="file"/>
<br/>
<input type="submit" name="submit" value="确定"/>
</form>
或者
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE"/>
文件名:<input type="file" name="file"/>
<br/>
<input type="submit" name="submit" value="确定"/>
</form>
这个只是上传的界面,真正的上传有靠action里面提到的upload.php.
2,文件传送
点击确定按钮后,文件放到临时文件夹中,但还没有传送到自己的电脑上,通过定义的upload.php进行文件的传送。用到的函数move_uploaded_file()。
在这之前要了解下FILES数组的内容。
通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。
第一个参数是表单的 input name(例子是file),第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:
$_FILES["file"]["name"] - 被上传文件的名称
$_FILES["file"]["type"] - 被上传文件的类型
$_FILES["file"]["size"] - 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] - 由文件上传导致的错误代码
现在在upload.php文件中进行文件的传送。代码如下:
<?php
if($_FILES["file"]["error"]>0) //传送不成功
{
echo "error:".$_FILES["file"]["error"];//显示错误的代码。如1代表文件太大等。
}
else //传送成功显示文件的名字,类型,大小等信息。
{
echo "upload:".$_FILES["file"]["name"]."<br/>";
echo "type:".$_FILES["file"]["type"]."<br/>";
echo "size:".($_FILES["file"]["size"]/1024)."KB<br/>";
echo "stored in:".$_FILES["file"]["tmp_name"];
if (file_exists("upload/" . $_FILES["file"]["name"])) //判断文件夹里有没有同名的文件
{
echo "<br/>";
echo $_FILES["file"]["name"] . " 已经存在了 ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
echo "</br>";
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
?>
注意:我们设置文件夹名是upload,所以你要在upload.php所在的文件夹里先建立一个名字为upload的文件夹。否则系统会提示找不到文件夹。
3,大文件的上传
默认情况下,可以上传2M以下的文件对于更大的文件的上传要进行以下设置:
打开php.ini,首先找到
file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开
upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
upload_max_filesize = 8m ;望文生意,即允许上传文件大小的最大值。默认为2M
post_max_size = 8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
设置完以上数值后,win+R打开运行界面输入services.msc打开服务重启apache服务(或者其他的服务器服务名),设置才能生效。
一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。
进一步配置以下的参数
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒
memory_limit = 8m ;每个PHP页面所吃掉的最大内存,默认8M
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
max_execution_time = 600
max_input_time = 600
memory_limit = 32m
file_uploads = on
upload_tmp_dir = /tmp
upload_max_filesize = 32m
post_max_size = 32m
注意:请确认修改的php.ini是不是需要修改的那个。检验设置是否生效可以在浏览器输入127.0.0.1/phpinfo.php查看php的配置信息。拿appserv来说修改X:\AppServ\php5下的两个php.ini-dist和php.ini-recommanded文件是无效的。真正的php.ini文件是在c:\windows下的。