1.配置指令
file_uploads = on/off
确定服务器上的PHP脚本是否可以接受文件上传
max_input_time = integer
指令确定PHP脚本在注册一个致命错误之前解析输入所花费的最长时间,以秒为单位。这很重要,因为特别大的文件需要一段较长的时间才能上传,这会超过这个指令设置的时限。
max_file_uploads = integer
指令对可以同时上传的文件数设置一个上限
post_max_size
对通过POST方法提交的数据大小设置一个上限。由于文件使用POST上传,在处理较大文件时,可能需要上调upload_max_filesize
upload_max_filesize
指令确定上传文件的最大值,以MB为单位。此指令必须不大于post_max_size
upload_tmp_dir
上传的文件在处理之前必须成功地传输到服务器,所以必须指定一个位置来临时放置这些文件,直到文件移动到最终目的地为止。
注意,这个目录对于拥有此服务器进程的用户必须是可写的。
memory_limit
设置脚本可以分配的最大内存量,这可以防止失控的脚本独占服务器内存
2.$_FILES
超级全局变量存储与通过一个PHP脚本上传到服务器的文件有关的各种信息。
<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="upload"><br>
<input type="submit" value="submit notes" name="ok">
</form>
a.$_FILES[‘upload’][‘error’]
上传文件的错误码
b.$_FILES[‘upload’][‘name’]
上传文件最初的名称
c.$_FILES[‘upload’][‘size’]
上传文件的大小
d.$_FILES[‘upload’][‘tmp_name’]
指定上传到服务器后文件的临时名。这是存储在临时目录(upload_tmp_dir指定)中时所指定的文件名
e.$_FILES[‘upload’][‘type’]
上传文件的类型MIME类型
eg.上传pdf application/pdf
3.PHP文件上传函数
a.is_uploaded_size()
is_uploaded_size()函数确定指定的文件是否已使用POST方法上传
boolean is_uploaded_file(string filename)
<?php
if(is_upload_file($_FILES['upload']['tmp_name'])){
copy($_FILES['upload']['tmp_name'],"/www/htdocs/".$_FILES['upload']['name']);
}
?>
is_upload_file()检查$_FILES[‘upload’][‘tmp_name’]指定的文件是否确实上传
b.移动已上传文件
move_uploaded_file()函数是将已经上传文件从临时目录移动到最终目标的一个便利方法
boolean move_uploaded_file(string filename,string destination)
虽然copy()也同样好用,但move_uploaded_file()还提供了一种额外的功能:它检查已确保由filename输入指定参数的文件确实是通过PHP的HTTP POST上传机制上传的。如果指定的文件未上传,则移动失败。因此,在使用move_uploaded_file()时可以不必先使用is_uploaded_file()