用户名:  密码:   
您当前的位置:首页 > 网页设计 >  PHP > 

PHP文件上传相关及$_files用法

上次修改时间: 2023-02-22 16:07:05      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\PHP相关\      下一页


来自:https://www.yisu.com/zixun/615870.html

1. 关于文件上传
文件上传实际就是用POST方式提交的,不需要调用专门的过程与函数,上传的原理类似表单提交数据到数据库

2. 关于$_FILES
简单的说$files就是一个变量(类似的预定义变量还有$_POST,$_GET,$_COOKIES,$_SERVER,$_SESSION),用来保存上传文件的信息,如果上传单个文件,它就是个二维数组,如果是多个文件就是三维数组,这个变量$_FILES中保存中上传文件的各种信息,如文件名,类型,上传过程中是否有错误,文件大小,临时保存位置
变量的值有:
 $FILES['file']['name'] ;            #文件名称
 $FILES['file']['type'] ;            #文件的MIME类型,需要浏览器提供该信息的支持
 $FILES['file']['size'] ;            #已上传文件的大小,单位为字节
 $FILES['file']['tmp_name'] ;        #文件被上传后在服务端储存的临时文件名
 $FILES['file']['error'] ;           #该文件上传相关的错误代码
其中$FILES['file']['error']的值又有:
 UPLOAD_ERR_OK        值:0;   没有错误发生,文件上传成功
 UPLOAD_ERR_INI_SIZE    值:1; 上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值          
 UPLOAD_ERR_FORM_SIZE     值:2;上传文件的大小超过了 HTML 表单中  MAX_FILE_SIZE 选项指定的值      
 UPLOAD_ERR_PARTIAL       值:3; 文件只有部分被上传                
 UPLOAD_ERR_NO_FILE       值:4;没有文件被上传, 值:5; 上传文件大小为0


多文件上传的示例代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PHP多文件上传</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="upfile[]"><br>
        <input type="file" name="upfile[]"><br>
        <input type="file" name="upfile[]"><br>
        <input type="submit" value="上传">
    </form>
</body>
</html>
<?php
    if(!empty($_FILES)){
        $tmpname = $_FILES['upfile']['tmp_name'];
        $name = $_FILES['upfile']['name'];
        $path = './phptest';                    //文件保存在当前目录下的phptest中
        for ($i=0; $i < count($tmpname); $i++) {
            $file_name = date('YmdHis').rand(100,999).$name[$i];    //文件名前加上当前年月日时分秒和100到999间的随机时防止重复
            if(move_uploaded_file($tmpname[$i], $path.'/'.$file_name)){
                echo $name[$i].' 上传成功!<br>';
            }else{
                echo $name[$i].' 上传失败!<br>';
            }
        }
    }
?>

其它说明:
上传文件还要看php.ini文件中各项的配置参数,php.ini位置可通过php_info()函数显示的Loaded Configuration File一栏的值找到。
php.ini中的文件太多可以使用ctrl+F来搜索相关配置项。那我们需要配置的参数如下:

file_uploads: on,说明服务器开启了文件上传功能;如果为 off,则说明服务器关闭了文件上传功能。
upload_tmp_dir:上传文件的临时目录。在文件被成功上传之前,文件首先会存放到服务器端的临时目录中,不设置的为系统默认的目录。
upload_max_filesize:服务器允许上传文件的最大值,以MB为单位。
max_execution_time:PHP 中一个指令所能执行的最大时间,单位是秒。
memory_limit:PHP 中一个指令所分配的内存空间,单位是 MB。