您的位置:首页 > 编程语言 > PHP开发

PHP 实现多文件上传功能

2017-08-15 15:31 651 查看
index.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
        <!-- 上传结构-->
        <form action="upload.php" method="post" enctype="multipart/form-data">    
            请选择上传文件:<br/>
            <input type="file" name="upload[]" /><br/>
            <input type="file" name="upload[]" /><br/>
            <input type="file" name="upload[]" /><br/>
            <input type="submit" name="submit" value="立即上传"></input>
        </form>
</body>
</html>

upload.php
<?php
header("content-type:text/html;charset=utf-8");
require_once 'config.php';//将封装函数导进来
if (isset($_POST['submit'])) {
    //上传文件储存路径:当前文件夹 upload 文件夹
    $path= './upload';
    //假如,允许上传的文件格式 为 image/jpeg image/png
    $arr_mime=array('image/jpeg','image/png');
    //将三维数组转化成二维数组
    $arr=$_FILES['upload'];
    //函数调用
    upload($arr,$arr_mime,$path);

}else{

    echo "<script>alert('非法操作');location.href='index.php';</script>";
}
 ?>

config.php
<?php
/**
 * [upload descript]
 *@param [type]$file [表单中文件域name 的值 如:$_FILES['upload']]
 *@param  [type] $arr_mime [允许上传的文件类型]
 *@param  [type] $path     [自己定义的上传文件的路径]
 *
 *@return [type]           [description]
 */

    function upload($file,$arr_mime,$path){

        //判断表单是否由 HTTP POST 上传
        //is_uploaded_file(上传临时文件)
        if (!is_uploaded_file($file['tmp_name'])) {
            exit('上传的文件有问题');
        }

        //判断上传文件是否有错误
        if ($file['error']!=0) {
            exit('上传文件有错误,请重新上传');
        }

        //控制上传文件的大小,允许上传小于2Mb
        if($file['size']>2*1024*1024){
            exit('上传的文件大于2mb');
        }

        //获取文件的扩展命名
        //方法一
        //strrpos- 计算指定字符串 在字符串中的最后出现的位置
        //$index=strrpos($file['name'],'.');
        //$str=substr($file['name'], $index);
        //echo $str;
        
        //方法2  strrchr - 查找字符串在字符串中 最后一次出现
            $ext=strrchr($file['name'],'.');
        

        //我们使用第三方的扩展 判断文件类型 通过上传文件扩展名 判断上传文件类型是不靠谱的
        $fs=finfo_open(FILEINFO_MIME_TYPE);// 调用第三方扩展 获取
        //var_dump($fs);// resource(2) of type (file_info) 资源类型 //资源类型的详细类型
        //finfo_file(资源类型,上传临时文件)
        $mime=finfo_file($fs,$file['tmp_name']);
        //echo $mime;
        //假设本网站 只允许用户 上传 类型图片类型为 image/jpeg image/png
           //$arr_mime=array('image/jpeg','image/png');
        //in_array($mime,$arr);判断 得到的类型在不在数组内
        if (!in_array($mime,$arr_mime)) {
            exit('上传文件不合法,请重新上传');
        }

        //构建临时文件
        $filename = $file['tmp_name'];
        //构建 目标文件的 文件名及路径
        $path='./upload';//在服务器的目录
        $destination= $path.'/'.date('YmdHis').$ext;

        if (!move_uploaded_file($filename, $destination)){
            exit('上传失败!');
        }
    }

 ?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: