Heim  >  Artikel  >  Backend-Entwicklung  >  Was Einsteiger über die Implementierung mehrerer Bild-Uploads in PHP wissen sollten

Was Einsteiger über die Implementierung mehrerer Bild-Uploads in PHP wissen sollten

烟雨青岚
烟雨青岚nach vorne
2020-06-15 18:04:412771Durchsuche

Was Einsteiger über die Implementierung mehrerer Bild-Uploads in PHP wissen sollten

Was Einsteiger über die Implementierung mehrerer Bild-Uploads in PHP wissen sollten

Ich bin heute bei der Arbeit auf eine Anforderung gestoßen : a Das Formular implementiert mehrere Upload-Bilder, ähnlich dem Modus zum Hochladen von Fotos im QQ-Bereich. Das heißt: Sie können mehrere Bilder gleichzeitig hochladen, es gibt jedoch nur ein Titelbild.

Als Erstes und Wichtigstes müssen Sie beim Lesen und Schreiben von Dateien auf dem Server die Berechtigungen überprüfen. Wenn Sie keine Berechtigungen haben, ist das alles Blödsinn.

Zuerst die Startseite: 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=&#39;myfile[]&#39;>
    </div>
    <input id="addBtn" type="button" οnclick="addPic1()" value="继续添加图片"><br/><br/>
    <input type="submit" value="上传文件">
</form>
<script>
    function addPic1(){
        var addBtn =  document.getElementById(&#39;addBtn&#39;);
        var input = document.createElement("input");
        input.type = &#39;file&#39;;
        input.name = &#39;myfile[]&#39;;
        var picInut = document.getElementById(&#39;picInput&#39;);
        picInut.appendChild(input);
        if(picInut.children.length == 3){
            addBtn.disabled = &#39;disabled&#39;;
        }
    }
</script>
</body>
</html>

Wissenspunkte:

1. Dynamisch über JS. Eingabeknoten hinzufügen und Attribute festlegen. Wenn mehr als 3 Bilder hochgeladen werden, besteht keine Möglichkeit mehr, Bilder hochzuladen.

2. Das Wichtigste hier ist der Namenswert des Eingabefelds. Durch das dynamische Hinzufügen von Array-Elementen werden alle hochgeladenen Bilder dynamisch zum Array hinzugefügt.

Back-End-Verarbeitungsfunktion

Connection.php

1. Sowohl das Lesen als auch das Speichern erfordern die Verbindung zur Datenbank, also Sie kann es versiegeln und gute Gewohnheiten entwickeln

<?php
//创建对象并打开连接,最后一个参数是选择的数据库名称
$mysqli = new mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;,&#39;test&#39;);
//检查连接是否成功
if (mysqli_connect_errno()){
    //注意mysqli_connect_error()新特性
    die(&#39;Unable to connect!&#39;). mysqli_connect_error();
}

pic.php-Verarbeitungsfunktion

<?php
require_once &#39;connection.php&#39;;
$file = $_FILES[&#39;myfile&#39;];  //得到传输的数据,以数组的形式
$name = $file[&#39;name&#39;];      //得到文件名称,以数组的形式
$upload_path = "zhouqi666.cn/test/images/"; //上传文件的存放路径
//当前位置
foreach ($name as $k=>$names){
    $type = strtolower(substr($names,strrpos($names,&#39;.&#39;)+1));//得到文件类型,并且都转化成小写
    $allow_type = array(&#39;jpg&#39;,&#39;jpeg&#39;,&#39;gif&#39;,&#39;png&#39;); //定义允许上传的类型
    //把非法格式的图片去除
    if (!in_array($type,$allow_type)){
        unset($name[$k]);
    }
}
$str = &#39;&#39;;
foreach ($name as $k=>$item){
    $type = strtolower(substr($item,strrpos($item,&#39;.&#39;)+1));//得到文件类型,并且都转化成小写
    if (move_uploaded_file($file[&#39;tmp_name&#39;][$k],$upload_path.time().$name[$k])){
        //$str .= &#39;,&#39;.$upload_path.time().$name[$k];
        echo &#39;success&#39;;
    }else{
        echo &#39;failed&#39;;
    }
}
//向指定id插入图片地址(虽然是插入,但是是更新字段,不要迷糊了)
$uid = 1;
$str = substr($str,1);
$sql = "UPDATE upload set pic = &#39;".$str."&#39; WHERE id = ".$uid;
$result = $mysqli->query($sql);

Ich habe viele Urteile, die ich hier nicht geschrieben habe, hauptsächlich um einige umzusetzen Beispielsweise muss der Ordner zuerst erstellt werden. Sie können ihn auch selbst beurteilen, einen Ordner erstellen, wenn er nicht vorhanden ist, und andere Urteile fällen.

Das Wichtigste ist, dass Sie es Schritt für Schritt debuggen müssen, wenn Sie damit nicht vertraut sind, um die Ergebnisse zu sehen.

Bild-Reality-Funktion

<?php
require_once &#39;connection.php&#39;;
$uid = 1;
$sql = "SELECT pic FROM upload WHERE id =".$uid;
$result = $mysqli->query($sql);
//取出第一个图片的地址
$picpath = &#39;&#39;;
while ($row = $result->fetch_array()){
    $picpath = $row[0];
}
$picpath = explode(&#39;,&#39;,$picpath)[0];
echo "<img src=&#39;".$picpath."&#39;>";
?>

Vielen Dank fürs Lesen, ich hoffe, Sie werden viel davon profitieren.

Dieser Artikel ist reproduziert von: https://blog.csdn.net/zmzwll1314/article/details/72673138

Empfohlenes Tutorial: „PHP-Tutorial

Das obige ist der detaillierte Inhalt vonWas Einsteiger über die Implementierung mehrerer Bild-Uploads in PHP wissen sollten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen