Heim > Web-Frontend > js-Tutorial > Hauptteil

So implementieren Sie das Hochladen und Anzeigen mehrerer Bilder und einzelner Bilder in js

王林
Freigeben: 2020-04-10 09:24:59
nach vorne
1899 Leute haben es durchsucht

So implementieren Sie das Hochladen und Anzeigen mehrerer Bilder und einzelner Bilder in js

Vorwort:

Das Hochladen von Bildern wird in Projekten oft in großen Mengen verwendet. Früher habe ich oft einige Materialien aus dem Internet heruntergeladen und direkt verwendet. Doch als die Anzahl der Projekte zunahm, stellte sich heraus, dass unterschiedliche Methoden zum Einsatz kamen, was zu großer Verwirrung führte. Deshalb habe ich mir die Zeit genommen, eine DEMO zu schreiben, um herauszufinden, wie reibungslos das Hochladen von Bildern verläuft und welche Punkte beim Hochladen einzelner und mehrerer Bilder beachtet werden müssen.

Mehrbild-Upload

Mehrbild-Upload, dies ist nur ein Front-End-Anzeigeeffekt. In tatsächlichen Projekten sollte beim Hochladen mehrerer Bilder ein Bild hochgeladen werden eine Zeit Senden Sie dann eine Anfrage an den Hintergrund, und der Hintergrund gibt den IMG-Pfad zurück und zeigt ihn dann an.

(Empfohlenes Tutorial: JS-Tutorial)

Warum muss es zur Anzeige an den Hintergrund übergeben werden?

1. Wenn Sie den Base64-Bildpfad direkt im Vordergrund anzeigen, senden Sie eine Anfrage an den Hintergrund. Wenn in der Benutzeroberfläche ein Fehler auftritt, hat der Benutzer die Illusion, dass das Bild erfolgreich hochgeladen wurde, der Hintergrund jedoch das Bild zu diesem Zeitpunkt nicht empfängt.

2 Dateien werden abgedeckt. Wenn es direkt ohne Ajax-Übermittlung angezeigt wird, wird nur das letzte mit der Formularübermittlung übermittelt.

<!DOCTYPE html>
<html>
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>多图上传/单图上传</title>
 <style>
  *{
   margin: 0;
   padding: 0;
  }
  .box{
   width: 1000px;
   height: 120px;
   margin: 0 auto;
   border: 1px solid #ddd;
   margin-top: 20px;
   box-sizing: border-box;
   padding: 10px;
  }
  .upload{
   width: 100px;
   height: 100px;
   float: left;
   position: relative;
   overflow: hidden;
  }
  .upload input{
   position: absolute;
   z-index: 1000;
   top:0;
   left:0;
   width: 100%;
   height: 100%;
   opacity: 0;
  }
  .upload a{
   display: block;
   width: 100%;
  }
  .upload img{
   display: block;
   width: 100%;
   height: 100%;
  }
  .imgList{
   float: left;
   overflow: hidden;
  }
  .imgList .item{
   width: 100px;
   height: 100px;
   margin-right: 20px;
   float: left;
   position: relative;
  }
  .imgList .item img{
   display: block;
   width: 100%;
   height: 100%;
  }
  .imgList .item span{
   position: absolute;
   top: 0;right: 0;
   width: 100%;
   background: red;
   color:#fff;
   height: 20px;
   width: 20px;
   text-align: center;
   border-radius: 50%;
   cursor: pointer;
  }
 </style>
</head>
<body>
 <div>
  <!-- 放图片的位置 -->
  <div id="imgList"></div>
  <!-- 上传按钮 -->
  <div>
   <input type="file" name="file" value="" multiple accept="image/*" onchange="uploadImg(this);">
   <a href="javascript:void(0)" rel="external nofollow" ><img src="z_add.png" alt=""></a>
  </div>
 </div>
 <script>
   function uploadImg(obj){   
    var files = obj.files;//获取上传文件后的fileList
    var imgList = [];//声明空数组用来接收上传完成后的图片
    for(var i = 0; i<files.length;i++){
     var imgUrl = window.URL.createObjectURL(files[i]);//将文件转换成base64 URL格式
     imgList.push(imgUrl);//将url压入到数组中 **如果需要图片统一选择完毕后,点击上传按钮统一提交,那么直接拿这imgList给后台传递即可。**
     // 循环创建img容器用来放置url在页面上显示
     var img = document.createElement(&#39;img&#39;)
     img.setAttribute("src", imgList[i]);
     //删除按钮
     var close = document.createElement(&#39;span&#39;)
     close.innerHTML="x"
     close.className=&#39;close&#39;
     close.setAttribute(&#39;onclick&#39;,"imgRemove(this)")
     //创建放置img的盒子
     var item = document.createElement(&#39;div&#39;);
     item.className=&#39;item&#39;;
     item.append(img)
     item.append(close)
     var box = document.getElementById("imgList");
     box.append(item);
     //ajax向后台发送请求
     
    }
   }
   //删除代码
   function imgRemove(obj){
    obj.parentNode.remove()
   }
   
 </script>
</body>
</html>
Nach dem Login kopieren

Einzelbild-Upload

Entfernen Sie das Mehrfachattribut in der Eingabe und es wird ein Einzelbild-Upload;

<input type="file" name="file" value="" accept="image/*" onchange="uploadImg(this);">
Nach dem Login kopieren

Befolgen Sie die oben genannten Schritte Code Sie können einzelne Bilder direkt hochladen und mehrere Bilder hochladen. Im Folgenden erfahren Sie, worauf Sie beim Hochladen einzelner Bilder und mehrerer Bilder achten müssen.

1 Einzelbild-Uploads können zusammen mit dem Formular übermittelt werden, und Sie können es im Hintergrund durch Eingabe senden ein Namenswert;

2. Mehrere Bild-Uploads können nicht zusammen mit dem Formular übermittelt werden, da die Datei nach jedem Upload nur das neueste Bild behält Durchlaufen Sie das Formular, um eine versteckte Eingabe zu erstellen und in den Hintergrund zurückzugeben. Der Pfad wird so eingestellt, dass er den Val-Wert der Eingabe ändert, und wird schließlich mit dem Formular übermittelt. Dabei ist zu beachten, dass der Namenswert der versteckten Eingabe eingeschrieben wird die Form von [], zum Beispiel: name="img[]". Auf diese Weise kann der Hintergrund beim Absenden des Formulars alle Bilder empfangen.

Der obige Code eignet sich für die Anzeige nach dem Front-End-Klicken auf die Datei zum Hochladen von Bildern. Je nach den Anforderungen des tatsächlichen Projekts können einige spezifische Interaktionen mit dem Hintergrund hinzugefügt werden!

Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Hochladen und Anzeigen mehrerer Bilder und einzelner Bilder in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
js
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage