PHP上传

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a736933735/article/details/89504366

1、配置php.ini文件

file_uploads:如果值是on,说明服务器支持文件上传;如果为off,则不支持;

upload_tmp_dir:上传文件临时目录。

upload_max_filesize:服务器允许上传文件的最大值,以MB为单位。系统默认为2M,用户自行设置。

max_execution_time:PHP中一个指令所能执行的最大时间,单位是秒。

memory_limit_:PHP中一个指令所分配的内存空间,单位是MB

2、PHP接收文件

通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

  • $_FILES["file"]["name"] - 被上传文件的名称
  • $_FILES["file"]["type"] - 被上传文件的类型
  • $_FILES["file"]["size"] - 被上传文件的大小,以字节计
  • $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
  • $_FILES["file"]["error"] - 由文件上传导致的错误代码

3、保存文件

move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); //第一个参数文件临时名称,第二个参数文件保存路径,第三个参数文件保存名称
<?php
$save_path = "./uploads";                               //文件保存路径
$max_size = 1000000;                                    //上传文件最大值
$allow_type = array('gif','png','jpg','jpeg');          //允许上传的类型

//判断保存的目录是否存在,如果不存在则创建保存目录
if(!is_dir($save_path)) {
    mkdir($save_path);
}

//判断文件是否上传成功
if($_FILES['myfile']['error']){
    echo "文件上传失败<br>";
    switch($_FILES['myfile']['error']){
        case 1: die('上传的文件超出系统的最大值<br>');break;
        case 2: die('上传的文件超出表单允许的最大值<br>');break;
        case 3: die('文件只有部分被上传<br>');break;
        case 4: die('没有上传任何文件<br>');break;
        default: die('未知错误<br>');break;
    }   
}

//通过文件的后缀判断是否为合法的文件名
$ext = array_pop(explode('.',$_FILES['myfile']['name']));
if(!in_array($ext,$allow_type)){
    die("该类型不允许上传<br>");
}

//判断文件是否超过允许的大小
if($max_size < $_FILES['myfile']['size']){
    die("文件超出PHP允许的最大值<br>");
}

//为了防止文件名重复,在系统中使用新名称
$save_file_name = date('YmdHis').rand(100,900).'.'.$ext;

//判断是否为HTTP POST上传的,如果是则把文件从临时目录移动到保存目录,并输出保存的信息;
if(is_uploaded_file($_FILES['myfile']['tmp_name'])) {
    if(move_uploaded_file($_FILES['myfile']['tmp_name'],$save_path.'/'.$save_file_name)) {
        echo "上传成功!<br>文件{$_FILES['myfile']['name']}保存在{$save_path}/{$save_file_name}!<br>";
     } else{
        echo "文件移动失败!<br>";
     }
} else{
    die("文件{$_FILES['myfile']['name']}不是一个HTTP POST上传的合法文件");
}

猜你喜欢

转载自blog.csdn.net/a736933735/article/details/89504366