文件上传基本思路

1.获取文件上传信息

2.判断文件是否可以成功上传到服务器,$_FILES['pic']['error'] 为0表示上传成功

  if()判断和switch()循环

3.获取上传文件的后缀名

  使用pathinfo()

  作用:返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options

  参数:path 要解析的路径

    options 如果指定了,将会返回指定元素;它们包括: PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION 或 PATHINFO_FILENAME 。

  如果没有指定 options 默认是返回全部的单元。

4. 通过文件的后缀名,来判断文件是否为允许上传的类型

  判断后缀不为空,并且在给定的数组类型中

5.判断上传的文件是否为允许大小

  先判断文件大小是否为true,在判断文件是否超过最大值

6.为了系统安全,也为了同名文件不会被覆盖,上传后将文件名使用系统重新定义

  使用随机函数mt_rand()

7. 判断是否为上传文件, 如果文件上传成功则输出信息

  使用is_uploaded_file:判断文件是否是通过HTTP POST上传的

  使用move_uploaded_file :将上传的文件移动到新位置

PHP中的upload.php代码:
 1 <?php
 2 header("content-type:text/html;charset=utf-8");
 3     echo "<pre>";
 4 //1.获取文件上传信息
 5     $error=$_FILES['pic']['error'];
 6     $name=$_FILES['pic']['name'];
 7     $allowType=['jpg','png'];
 8     $size=$_FILES['pic']['size'];
 9     $maxSize=100000;
10     $tmpname=$_FILES['pic']['tmp_name'];
11 //2.判断文件是否可以成功上传到服务器,$_FILES['pic']['error'] 为0表示上传成功
12     if($error){
13         echo "文件上传失败!";
14         switch($error){
15             case 1:
16             case 2:die("上传文件过大");break;
17             case 3:die("上传部分被上传");break;
18             case 4:die("没有选择上传文件");break;
19             case 6:die("系统错误,没有临时目录");break;
20             case 7:die("系统错误,临时目录不可写");break;
21         }
22     }
23 //3.获取上传文件的后缀名
24     $siffix=pathinfo($name,PATHINFO_EXTENSION);
25 //4. 通过文件的后缀名,来判断文件是否为允许上传的类型
26     if(!empty($allowType)){
27         if(!in_array($siffix,$allowType)){
28             die("文件类型不符合要求");
29         }
30     }
31 //5. 判断上传的文件是否为允许大小
32     if($size){
33         if($size>$maxSize){
34             die("上传文件大小超出要求");
35         }
36     }
37 //6.为了系统安全,也为了同名文件不会被覆盖,上传后将文件名使用系统重新定义
38     $newname=date("YmdHis").mt_rand("11111","999999").".".$siffix;
39 //7. 判断是否为上传文件, 如果文件上传成功则输出信息,否则输出文件上传失败
40     if (is_uploaded_file($tmpname)) {
41         if(move_uploaded_file($tmpname, "./test/{$newname}")){
42              echo  "文件上传成功,新文件名{$newname}<br/>";
43         }else{
44             die("文件移动失败");
45         }
46     }else{
47         die("非法文件");
48     }

HTML的代码:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <h2>完善的文件上传</h2>
    <form action="upload.php" method="post" enctype="multipart/form-data">
    <!-- 客户端限制:通过表单的隐藏域限制文件上传的最大值 -->
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
        账户名:<input type="text" name="name"><br/>
        头像:<input type="file" name="pic"><br/>
        <input type="submit" value="提交">
    </form>
</body>
</html>

 

转载于:https://www.cnblogs.com/qyun1677/p/10268548.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值