php文件上传

1、服务器端配置


在进行文件上传时需要先配置一下服务器,开启文件上传、指定上传文件的max_size,上传的文件保存的临时目录等。因为文件是采用post方式进行上传的所以,需要修改一下post的大小

  • 编辑php.ini

  

    

2、客户端页面


 

  • 错误的方式
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
    <form action="test.php" method="post">
        <input type="text" name="id">
        <input type="file" name="sql">
        <button type="submit">上传</button>
    </form>
</body>
</html>

上面的代码提交的服务器时是拿不到上传的文件的,我们先看看执行结果。 <?php print_r($_POST)?>;

我们在服务器只拿到了文件的名称,而并未得到文件的真的内容

  • 正确的方式
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
    <form action="test.php" method="post" enctype="multipart/form-data">
        <input type="text" name="id">
        <input type="file" name="sql">
        <button type="submit">上传</button>
    </form>
</body>
</html>

服务器端代码 <?php print_r($_POST); echo '<br>'; print_r($_FILES); 

  • 多文件上传
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
    <form action="test.php" method="post" enctype="multipart/form-data">
        <input type="text" name="id">
        <input type="file" name="sql[]">
        <input type="file" name="sql[]">
        <button type="submit">上传</button>
    </form>
</body>
</html>

 服务器端代码不变,其执行结果为:

3、服务器文件上传


<?php
    //错误检查
    if($_FILES['sql']['error'] > 0){
        exit(0);
    }

    //文件大小检查
    $maxSize = 5*1024*1024;
    if($_FILES['sql']['size'] > $maxSize){
        exit(0);
    }

    //文件类型检测,以后缀名检测
    $allowType = 'sql';
    $arr = explode('.', $_FILES['sql']['name']);
    $hz = $arr[count($arr)-1];
    if($hz != $allowType){
        echo 'file type error';
        exit(0);
    }

    $filepath = './uploads';
    $randname=data('Y').data('m').data('d').data('H').data('i').data('s').rand(100, 999).$hz;
    //将文件从临时目录取出
    if(is_uploaded_file($_FILES['sql']['tmp_name'])){
        if(move_uploaded_file($_FILES['sql']['tmp_name'], './uploads/'.$_FILES['sql']['name']))
            echo '上传成功';
        else
            echo "上传失败";
    }
    

 注意上面这些代码是文件已经完全上传到服务器才执行的!

原文地址:https://www.cnblogs.com/xidongyu/p/5541691.html