PHP学习8:复选框的处理,文件上传学习

复选框

1、 在浏览器端,checkbox的name属性的值不论什么都会被浏览器毫无保留的提交
2、 在PHP中$_POST/$_GET都会对同名name属性进行覆盖

解决方案:浏览器不识别[](浏览器不认为有特殊性),但是PHP认为[]有特殊性:系统自动认为该符号是数组的形式,所以PHP就会自动的将同名的但是带有[]的元素组合到一起形成一个数组
在这里插入图片描述
[]里面不写数字也可以,php会自动添加下标
在这里插入图片描述

文件上传

实现文件上传有这几个步骤:

1、 增加文件上传的表单:浏览器请求一个服务器的HTML脚本(包含文件上传表单)
2、 用户从本地选择一个文件(点击上传框(按钮))
3、 用户点击上传:文件会通过物联网传输到服务器上
4、 服务器操作系统会将文件保存到临时目录:是以临时文件格式保存(windows下tmp)
5、 服务器脚本开始工作:判断文件有效
6、 服务器脚本将有效文件从临时目录移动到指定的目录下(完成)

原理图解:
在这里插入图片描述

表单的制作

必需要满足这三个条件

  • method属性:表单提交方式必须为POST

  • enctype属性:form表单属性,主要是规范表单数据的编码方式
    在这里插入图片描述

  • 上传表单:file表单
    在这里插入图片描述

$_FILES变量详解

在PHP中,有一个预定义变量$_FILES是专门用来存储用户上传的文件的
在这里插入图片描述

从这里可以看到,post并没有记录上传文件的信息,文件的信息是储存在$_FILES变量里的

1)name:文件在用户(浏览器端)电脑上实际存在的名字(实际用来保留后缀)
2)tmp_name:文件上传到服务器后操作系统保存的临时路径(实际用来给PHP后期使用)
3)type:MIME(多功能互联网邮件扩展)类型,用来在计算机中客户端识别文件类型(确定软件)
4)error:文件上传的代号,用来告知应用软件(PHP)文件接收过程中出现了什么问题(PHP后期根据代码进行文件判断)可以去手册里看看
在这里插入图片描述
5)size:文件大小(PHP根据实际需求来确定是否该保留)

文件的保存

上传了文件,怎么保存到服务器里?因为之前我们并没有对上传的文件进行筛选保存,所以php运行结束后就会删除这个临时文件,所以我们就要赶在他删除这个文件之前把符合条件的文件移动到我们的服务器里面

涉及到两个函数一个是is_upload_file()
参数是临时文件(.tmp)的位置
在这里插入图片描述

另一个函数move_uploaded_file()
第一个参数是临时文件(.tmp)的位置,第二个参数的是想移动到的位置(需要要加上文件名)
在这里插入图片描述
所以我们php可以这样写(路径可以写相对路径)

<?php
    $file=$_FILES['img'];

    if (is_uploaded_file($file['tmp_name'])){
        echo("已识别到文件");
        if (move_uploaded_file($file['tmp_name'],'D:\phpstudy_pro\Extensions\Apache2.4.39\htdocs\uploads/'.$file['name'])){
            echo("上传成功");
        }
    }

多文件上传

当商品需要上传多个图片进行展示的时候:那么需要使用多文件上传
针对一个内容但是不同文件说明:同名表单
像复选框一样
在这里插入图片描述
同名表单:将表单名字形成一个数组,而且同时将文件对应的五个要素:name
Tmp_name、size、type、error都形成对应数量的数组,每个文件上传对应数组元素的下标都是一样的:name[0] 和type[0]是属于同一个文件
在这里插入图片描述

当商品需要进行多个维度图片说明的时候:需要使用多文件上传
针对是不同内容所以表单名字不一样:批量解决问题
在这里插入图片描述
不同名表单:每个文件都会形成一个属于自己独立的5个元素的数组
在这里插入图片描述

对多文件信息的遍历读取和处理

不同名多文件上传处理方式:
按照表单名字从$_FILES中取出来就可以直接使用(明确知道表单中有多少个文件上传);如果不确定表单中有多少个文件上传,不适合挨个去取(效率不高),可以通过遍历$_FILES数组,挨个取出来实现文件上传
在这里插入图片描述
同名多文件上传:想办法得到一个文件对应的五个元素数组。从$_FILES中把对应的name\tmp_name\size\error\type挨个取出来,然后存放到不同的数组中。
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huamanggg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值