要实现php的上传文件功能,首先就是要进行php.ini的配置。
[http://www.leapsoul.cn/?p=488]
php.ini中文件上传功能配置选项说明
打开php.ini配置文件找到File Uploads
file_uploads = On
默认允许HTTP文件上传,此选项不能设置为OFF。
upload_tmp_dir =
默认为空,此选项在手动配置PHP运行环境时,也容易遗忘,如果不配置这个选项,文件上传功能就无法实现,这个选项设置的是文件上传时存放文件的临时目录,你必须给这个选项赋值,比如upload_tmp_dir =’/leapsoulcn’,代表在C盘目录下有一个leapsoulcn目录,和session配置一样,如果你是在linux环境下,你必须赋予这个目录可写权限。
如何上传超过8M的大文件?
上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项。
php.ini配置文件中的默认文件上传大小为2M,php初学者容易犯的一个错误是在编写文件上传功能时通过设置上传文件最大大小的表单区域,即允许上传文件的最大值,max_file_size(隐藏值域)的值来规定上传文件的大小,其实一般别人可以绕过这个值,所以安全起见,最好是在php.ini配置文件中配置upload_max_filesize选项,设定文件上传的大小。
默认upload_max_filesize = 2M,即文件上传的大小为2M,如果你想上传超过8M的文件,比如20M,你必须设定upload_max_filesize = 20M。
但是光设置upload_max_filesize = 20M还是无法实现大文件的上传功能,你必须修改php.ini配置文件中的post_max_size选项,其代表允许POST的数据最大字节长度,默认为8M。如果POST数据超出限制,那么$_POST和$_FILES将会为空。要上传大文件,你必须设定该选项值大于upload_max_filesize指令的值,我一般设定upload_max_filesize和post_max_size值相等。另外如果启用了内存限制,那么该值应当小于memory_limit选项的值。
文件上传的其他注意事项
在上传大文件时,你会有上传速度慢的感觉,当超过一定的时间,会报脚本执行超过30秒的错误,这是因为在php.ini配置文件中max_execution_time配置选项在作怪,其表示每个脚本最大允许执行时间(秒),0 表示没有限制。你可以适当调整max_execution_time的值,不推荐设定为0。
[http://apps.hi.baidu.com/share/detail/10853800]
重启Apache(Linux)
查找apache安装目录:
在SSH下cd ADMIN_SCRIPTS_HOME -> pwd
基本的操作方法:
本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况apahce启动命令:
推荐/usr/local/apache2/bin/apachectl start apaceh启动
apache停止命令:/usr/local/apache2/bin/apachectl stop 停止
apache重新启动命令:
/usr/local/apache2/bin/apachectl restart 重启
至此,在php.ini配置文件中对文件上传选项配置已经完成,再结合PHP程序,文件上传功能就可以实现了。
php上传代码:
首先创建一个表单,主要代码如下:
<html>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="100000">
<label for="file">Filename:</label>
<input type="file" name="userfile" id="file" size="35" align="right"/>
<br /><br />
<p align="right">
<input type="submit" name="submit" id="1" value="上传文件"/>
</p>
</form>
</body>
</html>
再创建一个"upload_file.php" 文件含有供上传文件的代码:
<?php//输出上传文件的相关信息
print_r($_FILES);
if ($_FILES ['userfile'] ['error'] > 0) {
$error = $_FILES ['userfile'] ['error'];
switch ($error) {
case 1 :
echo "<script>alert('上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值!');</script>";
echo "<script>window.location='ipsearch.php';</script>";
break;
case 2 :
echo "<script>alert('上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值!');</script>";
echo "<script>window.location='ipsearch.php';</script>";
break;
case 3 :
echo "<script>alert('文件只有部分被上传!');</script>";
echo "<script>window.location='ipsearch.php';</script>";
break;
case 4 :
echo "<script>alert('没有文件被上传!');</script>";
echo "<script>window.location='ipsearch.php';</script>";
break;
default :
echo "<script>window.location='ipsearch.php';</script>";
break;
}
}
?>
这时php的文件上传就完成了。