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

5 einfache Möglichkeiten, Speicherplatz auf Ubuntu freizugeben

Vorwort Die meisten Benutzer führen diesen Vorgan...

js Implementierung des Verifizierungscode-Falls

In diesem Artikelbeispiel wird der spezifische Co...

Vue Grundlagen Listener Detaillierte Erklärung

Inhaltsverzeichnis Was ist ein Listener in Vue? V...

Schritte für Docker zum Erstellen eines eigenen lokalen Image-Repositorys

1. Umgebung und Vorbereitung 1. Ubuntu 14.04 2.Do...

Gestaltung von Popup-Fenstern und schwebenden Ebenen im Webdesign

Im Zuge des schrittweisen Übergangs von herkömmli...

Zusammenfassung der grundlegenden Verwendung von CSS3 @media

//Grammatik: @media Medientyp und | nicht | nur (...

Fassen Sie die häufig verwendeten n-ten-Kind-Selektoren zusammen

Vorwort In der Front-End-Programmierung verwenden...

Linux-Systemreparaturmodus (Einzelbenutzermodus)

Inhaltsverzeichnis Vorwort 1. Allgemeine Fehlerbe...

Verwendung des Linux-Befehls ln

1. Befehlseinführung Mit dem Befehl ln werden Lin...

JS verwendet Map, um doppelte Arrays zu integrieren

Inhaltsverzeichnis Vorwort Daten simulieren Zusam...

Zusammenfassung der grundlegenden Operationen für MySQL-Anfänger

Bibliotheksbetrieb Abfrage 1.SHOW DATABASE; ----A...