PHP 实现文件上传 【很简单三步就搞定】

PHP 实现文件上传 【很简单三步就搞定】

什么是文件上传?
      可以从客户计算机向远程服务器上传文件。
实现思路:
第一步:
      传文件
第二步:
      取文件
第三步:
      移动文件
必备知识:
$_FILES : 【超全局变量二位数组】
      第一个参数是表单上传文件 input 的name属性值,第二个下标可以是 “name”, “type”, “size”, “tmp_name” 或 "error"

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

      1、UPLOAD_ERR_OK:其值为 0,没有错误发生,文件上传成功。【$_FILES[’file‘][‘error’] == 0 为上传成功】
      2、UPLOAD_ERR_INI_SIZE:其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize选项限制的值。
      3、UPLOAD_ERR_FORM_SIZE:其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
      4、UPLOAD_ERR_PARTIAL:其值为 3,文件只有部分被上传。
      5、UPLOAD_ERR_NO_FILE:其值为 4,没有文件被上传。
      6、UPLOAD_ERR_NO_TMP_DIR:其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
      7、UPLOAD_ERR_CANT_WRITE:其值为 7,文件写入失败。PHP 5.1.0 引进。
必备函数:

strrchr — 查找指定字符在字符串中的最后一次出现
substr — 返回字符串的子串
in_array — 检查数组中是否存在某个值
date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区
file_exists — 检查文件或目录是否存在
mkdir — 新建目录
date — 格式化一个本地时间/日期
move_uploaded_file — 将上传的文件移动到新位置
示例:

// substr 函数实例
$rest = substr("abcdef", -1);    // 返回 "f"
$rest = substr("abcdef", -2);    // 返回 "ef"
$rest = substr("abcdef", -3, 1); // 返回 "d"

`// strrchr 函数实例
$a = '123.1.123';
$b = strrchr($a,'.');  
echo $b; // .123

// date_default_timezone_set 实例
date_default_timezone_set('PRC'); //中华人民共和国时区
date('Ymd')  // 20120616

代码实现:
      HTML :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="../upFile.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传">
</form>
</body>
</html>

<form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 “multipart/form-data”。

<input> 标签的 type=“file” 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

      PHP文件:

	header('Content-type:text/html;charset=utf-8');
    if($_FILES['file']['error'] == 0){  // 判断上传是否正确
        $fileName = $_FILES['file']['name'];  // 获取文件名称
        $fileSize = $_FILES['file']['size'];  // 获取文件大小
        $tmp_name = $_FILES["file"]["tmp_name"]; // 获取上传文件默认临时地址
        $fileTypeInfo = ['doc','txt','php'];  // 定义允许上传文件类型【很多种只列举3种】
        $fileType = substr(strrchr($fileName,'.'),1); // 提取文件后缀名
        if(!in_array($fileType,$fileTypeInfo)){  // 判断该文件是否为允许上传的类型
            echo '上传失败,文件格式不正确';
            die();
        }
        if($fileSize /1024 > 2){  // 规定文件上传大小【文件为Byte/1024 转为 kb】
            echo '上传失败,文件太大请上传小于2Kb';
            die();
        }
        date_default_timezone_set('PRC'); // 定义时间戳
        if(!file_exists('./common/uploads')){  // 判断是否存在存放上传文件的目录
                mkdir('./common/uploads');  // 建立新的目录
        }else{
            $newFileName = date('Ymd').'_'.$fileName;  // 命名新的文件名称
            if(move_uploaded_file($tmp_name,'./common/uploads/'.$newFileName)){  // 移动文件到指定目录
                echo ("上传成功");
            }
        }
    }else{
        echo "上传失败".$_FILES['file']['error'];  // 显示错误信息
    }

只是基础知识,望大家多多指教。

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值