Vue implementiert das Hoch- und Herunterladen von Dateien

Vue implementiert das Hoch- und Herunterladen von Dateien

In diesem Artikelbeispiel wird der spezifische Code von Vue zum Hoch- und Herunterladen von Dateien zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Datei-Upload

Der Datei-Upload in Vue besteht im Wesentlichen aus zwei Schritten: Abrufen der Datei im Frontend und Senden an das Backend

Datei laden

Das Frontend erhält Dateien hauptsächlich über das Eingabefeld

<el-dialog :title="AddName" :visible.sync="dialogAddFile" width="500px" style="padding:0;" @close="ResetAdd">
               Name des Anhangs: <el-input v-model="addFileName" autocomplete="off" size="small" style="width: 300px;" ></el-input>
                <div Klasse = "Datei rechts hinzufügen" Stil = "Höhe: 70px;Rand links: 100px;Rand oben: 15px;">
                    <div class="add-file-right-img" style="margin-left:70px;">Datei hochladen:</div>
                    <Eingabetyp="Datei" ref="clearFile" @change="getFile($event)" mehrere="multiplt" Klasse="add-file-right-input" Stil="margin-left:70px;" akzeptieren=".docx,.doc,.pdf">
                    <span class="add-file-right-more">Unterstützte Erweiterungen: .doc .docx .pdf </span>
                </div>
                <div Klasse="Dateiliste hinzufügen">
                    <ul>
                        <li v-for="(Artikel, Index) in addArr" :key="index"><a >{{Artikel.name}}</a></li>
                    </ul>
                </div>
                <div slot="Fußzeile" class="dialog-footer">
                    <el-button type="primary" @click="submitAddFile" size="small">Hochladen starten</el-button>
                    <el-button @click="resetAdd" size="small">Alle löschen</el-button>
               </div>
</el-dialog>

Das Wichtigste ist diese Codezeile:

Der Dateiupload wird über das Eingabefeld für den Dateityp implementiert. Anschließend werden mehrere Dateien hochgeladen, indem „multiple=‚multiplt‘“ festgelegt wird. Die Einschränkung des Upload-Dateityps wird mithilfe von „accept“ implementiert. Schließlich erhält das Front-End durch Abhören des Änderungsereignisses die hochgeladene Datei.

getFile(Ereignis){
           var Datei = Ereignis.Ziel.Dateien;
           für(var i = 0;i<Dateilänge;i++){
            // Beurteilung des Upload-Typs var imgName = file[i].name;
                var idx = imgName.lastIndexOf(".");  
                wenn (idx != -1){
                    var ext = imgName.substr(idx+1).toUpperCase();   
                    ext = ext.toLowerCase(); 
                     wenn (ext!='pdf' && ext!='doc' && ext!='docx'){
                       
                    }anders{
                          dies.addArr.push(Datei[i]);
                    }   
                }anders{
 
                }
           }
       },

Die hochgeladenen Dateien können über event.target.files im Änderungsereignis abgerufen werden, und der Typ der abgerufenen Dateien ist oben erneut eingeschränkt.

Datenübermittlung

Nachdem Sie die Dateidaten erhalten haben, müssen Sie die Daten an den Hintergrund übermitteln. Hier können Sie zum Senden FormData verwenden.

sendeAddFile(){
           wenn(0 == diese.addArr.length){
             diese.$nachricht({
               Typ: "Info",
               Meldung: „Bitte wählen Sie die hochzuladende Datei aus“
             });
             zurückkehren;
           }
 
            var formData = neue FormData();
            formData.append('num', this.addType);
            formData.append('linkId',this.addId);
            formData.append('rfilename',this.addFileName);
            für(var i=0;i<this.addArr.length;i++){
                formData.append('fileUpload',this.addArr[i]);
            }
          let konfiguration = {
            Überschriften: {
              'Inhaltstyp': 'multipart/Formulardaten',
              „Autorisierung“: this.token
            }
          };
          dies.axios.post(apidate.uploadEnclosure,formData,config)
            .then((Antwort) => {
                wenn(response.data.info=="Erfolg"){diese.$message({
                        Typ: "Erfolg",
                        Meldung: „Anhang erfolgreich hochgeladen!“
                    });
                }
            })
        }

Beim Senden von Daten sind zwei Punkte zu beachten: FormData-Objekt und Content-Type. Nach der Behandlung dieser beiden Punkte ist es dasselbe wie bei anderen Schnittstellen.

Herunterladen der Datei

Der erste Schritt besteht darin, eine Liste der Dateien vom Server abzurufen und anzuzeigen:

<div Klasse="Über-Datei">
    <div class="about-file-title">Zugehörige Materialien</div>
    <ul>
        <li v-for="(Element, Index) in zehnAnlagen.Zeilen" :key="index">
              <a target="_self" >{{item.tenPencSourname}}</a>
              <span @click="toxiazai(index,4,item.tenureId)" title="Herunterladen"></span>
              <span @click="toshanchu(index,4,item.tenureId)" title="Löschen"></span>
       </li>
   </ul>
</div>

Schließen Sie anschließend das Click-Download-Ereignis ab:

toxiazai(index,num,id){
          var tempForm = document.createElement("form"); //Erstellen Sie ein Formular und folgen Sie den verschiedenen Parametern des Formulars tempForm.id = "tempForm1";
          tempForm.method = "posten";
          tempForm.action = apidate.downloadEnclosure;
          tempForm.target="_";
          var hideInput1 = document.createElement("Eingabe");
          hideInput1.setAttribute('Typ','versteckt');
          hideInput1.setAttribute('name','linkId');
          hideInput1.setAttribute('id','linkId');
          hideInput1.setAttribute('Wert',id);
          tempForm.appendChild(hideInput1);
 
          var hideInput2 = document.createElement("Eingabe");
          hideInput2.setAttribute('Typ','versteckt');
          hideInput2.setAttribute('name','num');
          hideInput2.setAttribute('id','num');
          hideInput2.setAttribute('Wert',Anzahl);
          tempForm.appendChild(hideInput2);
 
 
          wenn(Dokument.alles){
            tempForm.attachEvent("onsubmit",function(){}); //IE
          }anders{
            var subObj = tempForm.addEventListener("senden",function(){},false); //Firefox
          }
          Dokument.Body.AppendChild(tempForm);
          wenn(Dokument.alles){
            tempForm.fireEvent("onsubmit");
          }anders{
            tempForm.dispatchEvent(neues Ereignis("Senden"));
          }
          tempForm.submit();//POST-Anfrage sendendocument.body.removeChild(tempForm);
},

Öffnen Sie die Datei online

Auf der PC-Seite werden viele Dateien heruntergeladen, auf der Mobiltelefonseite werden die meisten jedoch direkt online geöffnet. Wenn Sie die Datei online öffnen möchten, können Sie das href-Attribut des a-Tags verwenden, um

<ul>
     <li v-for="(Element, Index) in Hinweisliste" v-bind:key="index" Klasse="Personenliste" @click="Hinweis(Index)">
          <div Klasse="Personenlistenname">
              <a v-bind:href="[filePrefix+item.uuid_name]" rel="externes nofollow" rel="externes nofollow" >{{item.file_name}}</a>
         </div>
         <div class="person-list-time">Upload-Zeit: {{item.create_time}}</div>
     </li>
</ul>

Denn beim Öffnen einer Datei mit dieser Methode ist ein vollständiger Pfadname erforderlich, beim Abrufen der Liste aus dem Hintergrund handelt es sich jedoch normalerweise um einen relativen Pfad, sodass eine Pfadzusammenführung erforderlich ist: v-bind:href="[filePrefix+item.uuid_name]"

Bild-Upload und Vorschau

Nach dem Hochladen der Datei können Sie den Dateinamen zur Anzeige abrufen. Allerdings wird bei diesem Bilderupload nicht mehr der Bildname, sondern die Bildanzeige angezeigt.

Um beispielsweise den obigen Effekt zu erzielen, verwenden Sie die Eingabe, um das Bild hochzuladen

<div Klasse="Liste-Bild">
                <ul>
                    <li v-for="(Element, Index) in imgArr" :Schlüssel="Index">
                        <img :src="item.path" alt="" >
                        <a @click="todel(index)"></a>
                    </li>
           <li>
            <div Klasse="addImg" v-if="imgArr.length<3">
                  <span class="add">Bild hochladen</span>
                  <span class="add">(Bis zu 3 Fotos hochladen)</span>
                  <Eingabetyp="Datei" @change="getFile($event)" akzeptieren=".jpg,.png,.bmp,.gif">
             </div>
         </li>
     </ul>
</div>
getFile(Ereignis){
            var Datei = Ereignis.Ziel.Dateien;
            für(var i = 0;i<Dateilänge;i++){
               // Beurteilung des Upload-Typs var imgName = file[i].name;
                var idx = imgName.lastIndexOf(".");  
                wenn (idx != -1){
                    var ext = imgName.substr(idx+1).toUpperCase();   
                    ext = ext.toLowerCase(); 
                    wenn (ext!='jpg' && ext!='png' && ext!='bmp' && ext!='gif'){
                        
                    }anders{
                            dies.imgArr.push(Datei[i]);
                    }   
                }anders{
 
                }
            }
        },

Denn beim Drucken des Ereignisobjekts stellte ich fest, dass das hochgeladene Bild ein Pfadfeld enthielt, das der Adresse des Bildes auf dem Gerät entspricht. Ich ging davon aus, dass ich das Bild auf diese Weise anzeigen könnte. Als Ergebnis erhielt ich offensichtlich einen Fehler. Ich überprüfte es im Internet und stellte fest, dass ich FileReader verwenden muss, um die mit Input hochgeladenen Bilder anzuzeigen.

Insbesondere kann das durch die Eingabe erhaltene Bild nicht sofort angezeigt werden. Da es sich um zwei völlig unterschiedliche Dinge handelt, ist ein Array zum Speichern der angezeigten Bilder erforderlich.

getFile(Ereignis){
            var Datei = Ereignis.Ziel.Dateien;
            lass das = dies;
            für(var i = 0;i<Dateilänge;i++){
               // Beurteilung des Upload-Typs var imgName = file[i].name;
                var idx = imgName.lastIndexOf(".");  
                wenn (idx != -1){
                    var ext = imgName.substr(idx+1).toUpperCase();   
                    ext = ext.toLowerCase(); 
                    wenn (ext!='jpg' && ext!='png' && ext!='bmp' && ext!='gif'){
                        
                    }anders{
                            das.imgArr.push(Datei[i]);
                    }   
                }anders{
 
                }
                //Hochgeladene Bilder anzeigen let reader = new FileReader()
                Leser.readAsDataURL(Datei[i])
                reader.onload = Funktion(e) {
                    das.imgShow.push(dieses.Ergebnis);
                }
            }
        },

Auf diese Weise wird beim Senden von Daten imgArr und beim Anzeigen imgShow verwendet

Zu beachten ist außerdem, dass es auch einen Löschvorgang gibt. Der Löschvorgang ist hier nicht nur auf der Benutzeroberfläche unsichtbar, sondern bedeutet auch, dass die gelöschten Fotos nicht in den Hintergrund übertragen werden müssen. Daher müssen beide Arrays gelöscht werden.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Springboot+vue zum Realisieren des Hoch- und Herunterladens von Dateien
  • Vue Excel-Upload-Vorschau und Tabelleninhalt-Download in Excel-Datei
  • Springboot integriert Vue zum Hoch- und Herunterladen von Dateien
  • Vue implementiert Funktionen zum Hochladen, Lesen und Herunterladen von Dateien
  • Zwei Möglichkeiten zum Implementieren von Excel-Dateiupload- und -downloadfunktionen in Vue
  • vue-cli+axios realisiert die Funktion zum Hoch- und Herunterladen von Dateien (der Download-Empfangshintergrund gibt den Dateistream zurück)
  • Vue implementiert Funktionen zum Hoch- und Herunterladen von Dateien

<<:  Detailliertes Tutorial zur Installation der virtuellen Python 3-Umgebung in Ubuntu 20.04

>>:  Beispiel und Lösung für einen SQL-Injection-Sicherheitslückenprozess

Artikel empfehlen

Grundlegende Verwendung der JS-Datumssteuerung My97DatePicker

My97DatePicker ist ein sehr flexibles und benutze...

Vue implementiert grafischen Überprüfungscode

In diesem Artikelbeispiel wird der spezifische Co...

Kopieren und Einfügen ist der Feind der Verpackung

Bevor wir über OO, Entwurfsmuster und die vielen o...

Mybatis-Statistiken zur Ausführungszeit jeder SQL-Anweisung

Hintergrund In letzter Zeit werde ich in Intervie...

Implementierung des Tomcat-Bereitstellungsprojekts und Integration mit IDEA

Inhaltsverzeichnis 3 Möglichkeiten zum Bereitstel...

Analysieren Sie die Verwendung und Prinzipien von Vues Bereitstellung und Injektion

Lassen Sie uns zunächst darüber sprechen, warum w...

Javascript-Grundlagen zu integrierten Objekten

Inhaltsverzeichnis 1. Einführung in integrierte O...

Funktionen in TypeScript

Inhaltsverzeichnis 1. Funktionsdefinition 1.1 Fun...

10 sehr gute CSS-Fähigkeiten sammeln und teilen

Hier können Sie durch geschickten Einsatz von CSS-...

Installieren Sie Python 3.6 unter Linux und vermeiden Sie Fallstricke

Installation von Python 3 1. Abhängige Umgebung i...

Vue+openlayer5-Methode zum Abrufen der Koordinaten des aktuellen Mauszeigers

Vorwort: Wie erhält man die Koordinaten der aktue...

So aktivieren Sie Flash in Windows Server 2016

Ich habe vor Kurzem VMware Horizon bereitgestellt...