13
2019
07

PHP文件上传

要想通过PHP成功地管理上传文件,需要通过以下三方面信息:

1、设置PHP配置文件中的指令:用于精细地调节PHP的文件上传功能

2、$_FILES多维数组:用于存储各种与上传文件有关的信息,其他数据还使用$_POST去接收

  $_FILES["myfile"]["name"]中的值是:客户端文件系统的文件的名称

  $_FILES["myfile"]["type"]中的值是:客户端传递的文件的类型

  $_FILES["myfile"]["size"]中的值是:文件的字节的大小

  $_FILES["myfile"]["tmp_name"]中的值是:文件被上传后在服务器存储的临时全路径

  $_FILES["myfile"]["error"]中的值是:文件上传的错误代码(php 4.2以后增加的功能)

  伴随文件上传时产生的错误信息代码具体如下:

  值为0(UPLOAD_ERR_OK):表示没有发生任何错误

  值为1(UPLOAD_ERR_INI_SIZE):表示上传文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是:upload_max_filesize

  值为2(UPLOAD_ERR_FORM_SIZE):表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值

  值为3(UPLOAD_ERR_PARTIAL):表示文件只被部分上传

  值为4(UPLOAD_ERR_NO_FILE):表示没有上传任何文件

  值为6(UPLOAD_ERR_NO_TMP_DIR):表示找不到临时文件夹(PHP4.3.10和PHP5.0.3)

  值为7(UPLOAD_ERR_CANT_WRITE):表示文件写入失败(PHP 5.1.0)

  3、PHP的文件上传处理函数:用于上传文件的后续处理

  只要把临时目录下的上传的文件,复制到指定目录下指定的名字就可以完成上传

  PHP提供了专门用于文件上传所使用的is_uploaded_file()和move_uploaded_file()函数

【is_uploaded_file()】

  is_uploaded_file()判断文件是否是通过 HTTP POST 上传的

bool is_uploaded_file ( string $filename )

  如果filename所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件

  [注意]为了能使is_uploaded_file() 函数正常工作,必须使用$_FILES['userfile']['tmp_name'],而在从客户端上传的文件名$_FILES['userfile']['name']不能正常运作

【move_uploaded_file()】

  move_uploaded_file()方法用于将上传的文件移动到新位置

bool move_uploaded_file ( string $filename , string $destination )

  本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件

  该函数成功时返回TRUE;如果filename不是合法的上传文件,不会出现任何操作,move_uploaded_file()将返回 FALSE;如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file()将返回 FALSE。此外还会发出一条警告

<?php 
header("Content-Type:text/plain;charset=utf-8");
//判断错误
if($_FILES['file1']['error'] > 0) {
    switch($_FILES['file1']['error']) {
        case 1:
        case 2:
            echo "上传文件太大";
            break;
        case 3:
            echo "文件只被部分上传";
            break;
        case 4:
            echo "没有上传任何文件";
            break;
        default:
            echo "末知错误";
    }
    exit;
}
    //判断类型
    $arr = explode(".", basename($_FILES['file1']['name']));
    $hz = array_pop($arr);
    $allowtype =array("gif", "png", "jpg", "jpeg");
    if(!in_array($hz, $allowtype)) {
        echo "上传的类型不合法";
        exit;
    } 
    //判断大小
    $maxsize= 1000000;
    if($_FILES['file1']['size'] > $maxsize) {
        echo "上传的文件超过了{$maxsize}字节!";
        exit;
    }
    //随机文件名
    $tmp_name = $_FILES['file1']['tmp_name'];
    $src_name = "./uploads/".date("YmdHis").rand(100, 999).".".$hz;
    if(move_uploaded_file($tmp_name, "$src_name")){
        echo '上传成功';
    }else{
        echo '上传失败';
    }    
?>

原文链接:https://www.qiquanji.com/post/7944.html

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

gzh

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。