新手应该知道的php多图片上传的实现-php教程

资源魔 103 0

老手应该晓得的php多图片上传的完成

明天正在工作中遇到了一个需要:一个表单完成多个上传图片,相似于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 = "zhouqi666.cn/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."'>";
?>

感激各人的浏览,心愿各人收益多多。

本文转自:https://blog.csdn.net/zmzwll1314/article/details/72673138

保举教程:《php教程》

以上就是老手应该晓得的php多图片上传的完成的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!