上传配置
1.file_uploads=on|off:确定服务器上的php脚本是否可以接受文件上传
2.max_execution_time=integer:php脚本在注册一个致命错误之前可以执行的最长时间,以秒为单位
3.memory_limit=integer:设置脚本可以分配到的最大内存,以MB为单位,这可以防止失控的脚本独占服务器内存
4.upload_max_filesize=integer:设置文件上传最大大小,以MB为单位,此指令必须小于post_max_size。
5.upload_tmp_dir=string:设置上传文件在处理之前必须存放在服务器的一个临时位置,知道文件移动到最终目的地为止。
6.post_max_size=integer:确定通过POST方法可以接受的信息的最大大小,以MB为单位。
文件上传表单
<form enctype="multipart/form-data" action="1.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
上传文件:<input type="file" name="userfile" />
<input type="submit" value="上传" />
</form>
解释:
enctype="multipart/form-data",这里是固定写法,否则文件上传失败
action="1.php",定义要处理上传文件的程序文件路径
method="post",定义输出方式为POST,一般情况下Form提交数据都设置为POST
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">,这是一个隐藏域定义了上传文件的大小上限,超过这个值时,上传失败。它必须定义在文件上传域的前面
而且这里定义的值不能超过在php.ini文件中upload_max_filesize设置的值,否则没有意义了。(注意:MAX_FILE_SIZE的值只是对浏览器的一个建议,实际上它可以被简单的绕过,因此不要把对浏览器的限制寄希望于该值。实际上,php.ini设置中的上传文件最大值,是不会失效的,但是最好还是在表单上加上MAX_FILE_SIZE,因为它可以避免影虎在花时间等待上传大文件之后发财险文件太大了的麻烦。)
<input type="file" name="userfile" />这是文件上传域,type属性必须设置为file,但是name属性可以自定义,这个值会在代码文件中使用。
$_FILES超全局变量,它存储各种与上传有关的信息,这些信息对于通过php脚本上传到服务器的文件至关重要
1.$_FILES['userfile']['tmp_name']:文件在web服务器中临时存储的位置
2.$_FILES['userfile']['name']:用户系统汇总的文件名称
3.$_FILES['userfile']['size']:文件的字节大小
4.$_FILES['userfile']['type']:文件的MIME类型。例如:image/gif或text/plain
5.$_FILES['userfile']['error']:文件上传的错误代码
0.没有发生错误1.上传文件的大小超出了约定值(PHP配置文件中指定的upload_max_filesize)2.上传文件大小超出了HTML表单中的MAX_FILE_SIZE元素所指定的最大值3.文件只被部分上传4.没有上传任何文件
PHP上传函数
1.is_uploaded_file()判断文件是否通过HTTP_POST上传,通过HTTP_POST上传后,文件会存放在临时文件夹下,所以参数为上传文件的临时路径。成功true,失败false
2.move_uploaded_file()将上传的文件移动到新位置。第一个参数:临时文件的地址,第二个参数:你要存放的文件的地址。成功true,失败false。
接受上传文件
1.通过$_FILES['userfile']['type']的判断上传文件类型是否符合要求
注:相同的文件在不同的浏览器中文件类型不同!
2.通过$_FILES['userfile']['error'] 的值判断上传是否成功
3.通过$_FILES['userfile']['size']的值和约定的配置大小比较判断文件是否符合要求
4.通过is_uploaded_file($_FILES['userfile']['tmp_name'])判断文件是否通过HTTP_POST上传
5.通过move_uploaded_file($_FILES['userfile']['tmp_name'],‘新的文件路径’)移动文件
注:新的文件路径如果实在一个文件夹下面,则在移动之前要先判断该目录是否存在,不存在的情况下自动建立该目录