您现在的位置是:首页 > 学无止境 > PHPPHP
php多图片上传的实现(pbootcms多图上传)
AndyGuo2020-06-17 08:06:24【PHP】2705人已围观
最近群里的小伙伴经常问到,PbootCMS前台不登录后台的情况下怎么发布文章,并且可以上传多图片:一个表单实现多个上传图片,类似于QQ空间上传照片的模式。即:可以一次性上传多个图片,但是封面图片只有一个。

新手应该知道的php多图片上传的实现
最近群里的小伙伴经常问到,PbootCMS前台不登录后台的情况下怎么发布文章,并且可以上传多图片:一个表单实现多个上传图片,类似于QQ空间上传照片的模式。即:可以一次性上传多个图片,但是封面图片只有一个。
最先,最重要的事,在服务器上对文件进行读写操作的时候,一定要看权限,如果没有权限,全是虾扯蛋。为什么呢,没有为什么!
首先,前端页面:index.html
<html>
<head><title>多个文件上传表单</title></head>
<body>
<style>
form{
margin: 20px;
padding: 10px;
}
#picInput>input{
display: block;
margin: 10px;
}
</style>
<form action="pic.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<div id="picInput">
上传图片:<input type="file" name='myfile[]'>
</div>
<input id="addBtn" type="button" οnclick="addPic1()" value="继续添加图片"><br/><br/>
<input type="submit" value="上传文件">
</form>
<script>
function addPic1(){
var addBtn = document.getElementById('addBtn');
var input = document.createElement("input");
input.type = 'file';
input.name = 'myfile[]';
var picInut = document.getElementById('picInput');
picInut.appendChild(input);
if(picInut.children.length == 3){
addBtn.disabled = 'disabled';
}
}
</script>
</body>
</html>知识点:
1.通过JS动态添加input结点和设置属性,当大于3个上传图片的时候就不再给予上传图片的机会了。
2.这里最主要的是input输入框的name值,通过动态的添加数组元素,将所有上传的图片动态添加到数组当中。
后端处理功能
Connection.php
1.读取和存储都需要用到连接数据库,所以可以把它封住一下,养成良好的习惯
<?php
//创建对象并打开连接,最后一个参数是选择的数据库名称
$mysqli = new mysqli('localhost','root','','test');
//检查连接是否成功
if (mysqli_connect_errno()){
//注意mysqli_connect_error()新特性
die('Unable to connect!'). mysqli_connect_error();
}pic.php处理功能
<?php
require_once 'connection.php';
$file = $_FILES['myfile']; //得到传输的数据,以数组的形式
$name = $file['name']; //得到文件名称,以数组的形式
$upload_path = "d163.net/test/images/"; //上传文件的存放路径
//当前位置
foreach ($name as $k=>$names){
$type = strtolower(substr($names,strrpos($names,'.')+1));//得到文件类型,并且都转化成小写
$allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型
//把非法格式的图片去除
if (!in_array($type,$allow_type)){
unset($name[$k]);
}
}
$str = '';
foreach ($name as $k=>$item){
$type = strtolower(substr($item,strrpos($item,'.')+1));//得到文件类型,并且都转化成小写
if (move_uploaded_file($file['tmp_name'][$k],$upload_path.time().$name[$k])){
//$str .= ','.$upload_path.time().$name[$k];
echo 'success';
}else{
echo 'failed';
}
}
//向指定id插入图片地址(虽然是插入,但是是更新字段,不要迷糊了)
$uid = 1;
$str = substr($str,1);
$sql = "UPDATE upload set pic = '".$str."' WHERE id = ".$uid;
$result = $mysqli->query($sql);当然,这里有很多的判断没有写,主要是实现一下功能,比如文件夹要先建立好,你也可以自己判断,不存在就创建一个文件夹,还有一些其他判断等等。
最关键的地方是,当你不熟悉的时候,要走一步调试一步,看得到的结果是什么。
图片显示功能
<?php
require_once 'connection.php';
$uid = 1;
$sql = "SELECT pic FROM upload WHERE id =".$uid;
$result = $mysqli->query($sql);
//取出第一个图片的地址
$picpath = '';
while ($row = $result->fetch_array()){
$picpath = $row[0];
}
$picpath = explode(',',$picpath)[0];
echo "<img src='".$picpath."'>";
?>
- 本文网址:http://www.d163.net/html/php/92.html
- 上篇文章:PHP多条件内容混合筛选功能的实现方法
- 下篇文章:mysql增删改查基础操作的语法
PbootCMS标签大全
最新发表
标签云 更多
-
SAP(1)
奥运会(1)
短视频(1)
杨倩(1)
提拉米苏(1)
大家财险机动车辆保险(1)
王一博(1)
肖战(1)
苏炳添(1)
刘德华(1)
小鹏汽车(1)
高考(4)
阿里云(1)
HR(1)
邓伦(1)
李莎(1)
杜淳(2)
PHP教程(7)
陈好(1)
playhouse(1)
fopen(1)
山村疯狂(1)
第二书包(0)
69乐园(1)
牡丹江民心网(1)
授课到天亮(1)
天天综合(2)
好人岛(1)
符印巨树(1)
男子汉图库(1)
采花小绵羊(1)
涡卷花束(1)
一方嘉通(1)
李心草(2)
半藏森林不带套(2)
王镁幼(2)
嫦娥五号(3)
周冬雨(1)
黄晓明(1)
金鸡奖获奖名单(3)
网页计数器(2)
成都大学(1)
中科创星(1)
马拉多纳(4)
世界互联网大会(2)
porndao(1)
web前端(6)
网站优化(6)
cookie(2)
session(2)
301重定向(1)
headerlocation(1)
百度站内搜索(1)
爱奇艺(2)
爱奇艺弹幕开关不见了(1)
制作网页教程(4)
刘诗昆(1)
react(1)
linear-gradient(1)
旅游网站建设方案(1)
我爱自学网(2)
诺贝尔(1)
笔记(1)
居里夫人(1)
郭德纲(1)
杨紫(2)
蚂蚁金服上市时间(3)
爱琴海(1)
李连杰(1)
陈佩斯(1)
梁静茹(2)
个人网站模板(0)
个人网站制作(3)
个人网站(3)
网页制作(10)
帝国CMS(6)
百度地图API(2)
伪静态(2)
jizhicms(6)
1024(3)
去除bom(1)
Git(2)
中国人民志愿军(2)
麒麟9000(2)
Mate40(2)
新冠病毒(15)
摩天轮(1)
布达佩斯(1)
div居中(2)
新冠疫苗最新消息(12)
新冠疫苗(6)
昆仑饭店(2)
赵丽颖(6)
正面照(2)
石原里美(2)
店员(1)
理发(2)
十几万(1)
伊能静(1)
京东(4)

