Vue-Kapselungskomponente Bildkomponente hochladen

Vue-Kapselungskomponente Bildkomponente hochladen

In diesem Artikelbeispiel wird der spezifische Code der Vue-Upload-Bildkomponente zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Status „Nicht hochgeladen“

Upload-Status

Anderer Status (anzeigen/löschen)

Benutzerdefinierter Komponentendateiname – hier heißt er UploadImg.vue

<Vorlage>
  <div>
    <el-form>
      <!-- :on-change="Datei hochladen" -->
      <el-hochladen
        :limit="limit" //Die maximal zulässige Anzahl von Uploads Aktion
        accept="image/*" //Upload akzeptieren:on-change="uploadFile" //Funktion bei Änderung des Dateistatuslist-type="picture-card" //Dateilistentyp:auto-upload="false" //Ob nach Auswahl einer Datei sofort hochgeladen werden soll:file-list="fileList" //Virtuelles Dateiarray:on-exceed="handleExceed" //Funktion, wenn die Anzahl der Dateien das Limit überschreitet:on-preview="handlePictureCardPreview" //Funktion beim Klicken auf eine hochgeladene Datei in der Dateiliste:on-remove="handleRemove" //Funktion beim Entfernen einer Datei aus der Dateilisteref="upload"
        Klasse = "Avatar-Uploader"
        :class="{hide:showUpload}" //Wird verwendet, um die Upload-Schaltfläche auszublenden, nachdem das maximale Limit erreicht wurde: disabled="disabled" //Um den Upload-Fehlerprozess anzuzeigen>
        <i class="el-icon-plus"></i>
      </el-upload>
      //Bild anzeigen <el-dialog width="30%" :visible.sync="dialogVisible">
        <img width="100%" :src="imgUrl.url" alt />
      </el-dialog>
      //Wenn Sie nicht direkt hochladen müssen, sondern auf eine Schaltfläche klicken müssen, um das Bild hochzuladen, öffnen Sie bitte diese Methode //Ändern Sie „on-change“ im obigen „el-upload“-Tag in die „http-request“-Methode<!-- <Button text="Upload" type="add_u" style="margin-top: 10px;" @click.native="submitUpload"></Button> -->
    </el-form>
  </div>
</Vorlage>

<Skript>
//Einführung der Schnittstelle zum Hochladen von Bildern import { uploadImg } from "@/api/public/api";
Standard exportieren {
  Requisiten: {
    limit: Anzahl,
    Dateiliste: Array,
    deaktiviert: Boolean,
  },
  Daten() {
    zurückkehren {
      showUpload: false, //Schließe den Upload-Button, nachdem das Maximallimit kontrolliert wurde. dialogVisible: false, //Zeige das Bild-Popup-Fenster. imgUrl: [], //Sammlung von Adressen nach dem Hochladen des Bildes};
  },
  // Das Array der hochgeladenen Bilder abhören (um das Problem der automatischen Darstellung und das Verschwinden der Schaltfläche zum Hochladen beim Ändern zu beheben);
  betrachten:
    Dateiliste(neuerName, alterName) {
      wenn (neuerName.Länge == dieses.Limit) dieses.showUpload = true;
      sonst this.showUpload = false;
    },
  },
  Methoden: {
    //Funktion zum Entfernen von Dateien aus der Dateiliste handleRemove(file, fileList) {
      const index = this.fileList.findIndex((item) => item === file.uid);
      diese.imgUrl.splice(index, 1);
      dies.$emit("delUrl", dies.imgUrl);
      wenn (Dateiliste.Länge < dieses.Limit) dieses.showUpload = false;
    },
    //Funktion beim Anklicken einer hochgeladenen Datei in der Dateiliste handlePictureCardPreview(file) {
      diese.imgUrl.url = Datei.URL;
      this.dialogVisible = true;
    },
    //Dies ist eine Methode zum Hochladen über eine Schaltfläche anstelle des direkten Hochladens submitUpload() {
      dies.$refs.upload.submit();
    },
    //Funktion bei Änderung des Dateistatus (Hauptlogikfunktion)
    uploadFile(e, Dateiliste) {
      //Beurteilen Sie die maximale Anzahl von Benutzer-Uploads, damit die Upload-Schaltfläche verschwindet, wenn (fileList.length >= this.limit) this.showUpload = true;
      // const file = e.file; <- hier ist kein direkter Upload nötig, sondern der Upload erfolgt über den Button const file = e.raw; // <- hier wird direkt hochgeladen // Größe const size = file.size / 1024 / 1024 / 2;
      Wenn (
        !(
          Dateityp === "Bild/png" ||
          Dateityp === "Bild/GIF" ||
          Dateityp === "Bild/jpg" ||
          Dateityp === "Bild/JPEG"
        )
      ) {
        dies.$notify.warning({
          Titel: "Warnung",
          Nachricht:
            „Bitte laden Sie Bilder in den Formaten image/png, image/gif, image/jpg, image/jpeg hoch“,
        });
      } sonst wenn (Größe > 2) {
        dies.$notify.warning({
          Titel: "Warnung",
          Meldung: „Bildgröße muss kleiner als 2 MB sein“,
        });
      } anders {
        if (this.limit == 1) this.imgUrl = []; //Wenn es als Eins beurteilt wird, muss das Array gelöscht werden const params = new FormData();
        params.append("Quelle", Datei);
        uploadImg(params).then((res) => {
        //Die hier zurückgegebene Datenstruktur (ändern Sie diese entsprechend Ihrer eigenen Rückgabestruktur)
          wenn (res.data.status === 1) {
            this.$message.success("Upload erfolgreich");
            diese.imgUrl = res.data;
            //Rufen Sie die Methode der übergeordneten Komponente auf, um den Bildparameter this.$emit("getUrl", this.imgUrl); zu übergeben.
          } sonst this.$message.error("Upload fehlgeschlagen");
        });
      }
    },
    //Funktion, wenn die Anzahl der Dateien den Grenzwert überschreitet handleExceed(files, fileList) {
      this.$message.info(`Es können nur ${this.limit} Bilder hochgeladen werden`);
    },
  },
};
</Skript>

//Ändern Sie die Stile vor und nach dem Hochladen hier (ich finde, dass el-upload nicht gut aussieht und Sie es selbst ändern können)
<Stilbereich>
.hide .el-upload--Bildkarte {
  Anzeige: keine !wichtig;
}
.avatar-uploader > .el-upload {
  Breite: 200px;
  Höhe: 200px;
  Zeilenhöhe: 200px;
  Rahmenradius: 0px;
  Hintergrund: #fff;
  Rand: 1px gestrichelt #ccc;
}
.avatar-uploader > .el-upload > i {
  Schriftgröße: 28px;
  Farbe: #ccc;
}
.avatar-uploader > .el-upload-list {
  Anzeige: Block;
}
.avatar-uploader > .el-upload-list > .el-upload-list__item {
  Breite: 200px;
  Höhe: 200px;
  Anzeige: Block;
}
.avatar-uploader > .el-upload-list > .el-upload-list__item > img {
  Breite: 200px;
  Höhe: 200px;
  Rahmenradius: 0px;
}
</Stil>

Auf der Seite verwenden - (Da ich es hier häufig verwende, schreibe ich die globale Version. Sie können je nach Ihrem eigenen Projekt entscheiden.)

Haupt-JS

//Bild-Upload-Komponente importiere UploadImg von "@/views/common/UploadImg.vue";
Vue.component('Bild hochladen', Bild hochladen)

Demo.vue

<el-form-item label="Bild hochladen">
 //Begrenzung der maximalen Anzahl hochzuladender Bilder //fileList Bild-Array //getUrl Hochgeladene Adresse abrufen //delUrl Hochgeladene Adresse löschen // deaktiviert Verarbeitung deaktivieren <UploadImg :limit="1" :file-list="fileList" @getUrl="getUrl($event,'Parameters you need to carry')" @delUrl="delUrl($event,'Parameters you need to carry')" :disabled="true" />
</el-form-item>

//Variablendeklaration data:{
 Dateiliste:[]
 }
//Funktion getUrl(getUrl){
 Konsole.log(getUrl)
 };
delUrl(getUrl){
Konsole.log(getUrl)
};

Hoffe, dieser Artikel kann Ihnen helfen!!

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:
  • Vue implementiert Datei-Upload-Funktion
  • Drei Möglichkeiten zum Hochladen von Bildern mit Vue
  • Formulardaten in Vue Axios übermitteln (einschließlich Hochladen von Dateien)
  • Der Uploader von Vue+Vant auf dem mobilen Endgerät realisiert die Funktionen des Hochladens, Komprimierens und Drehens von Bildern
  • Vue+elementUI implementiert ein Beispiel für eine Formular- und Bild-Upload- und Überprüfungsfunktion
  • vue + elementUI realisiert die Bild-Upload-Funktion
  • Verwenden Sie input[type="file"] in Vue, um die Datei-Upload-Funktion zu implementieren
  • Detaillierte Erklärung zum Aufrufen der Handykamera und des Fotoalbums durch Vue sowie zum Hochladen
  • Vue-Upload-Komponente Vue Simple Uploader Anwendungsbeispiel
  • Zwei Möglichkeiten zum Implementieren von Excel-Dateiupload- und -downloadfunktionen in Vue

<<:  Detaillierte Erklärung zur Verwendung von Zabbix zur Überwachung der Oracle-Datenbank

>>:  Anwendung schöner Stylesheets bei der Erstellung von XHTML+CSS-Webseiten

Artikel empfehlen

Welche magischen Anwendungen haben CSS-Filter?

Hintergrund Grundlegende Konzepte CSS filter wend...

Detaillierte Schritte zum Starten des Django-Projekts mit nginx+uwsgi

Wenn wir ein Webprojekt mit Django entwickeln, wi...

Warum wird deine Like-Aussage nicht indexiert?

Vorwort Dieser Artikel zielt darauf ab, die langw...

Bedingte Kommentare zur Bestimmung des Browsers (IE-Reihe)

<!--[if IE 6]> Nur IE6 kann erkennen <![e...

Geplantes Teilen von Skripten für MySQL-Datenbanksicherungen

BackUpMysql.sh-Skript #!/bin/bash PATH=/bin:/sbin...

JavaScript zum Erreichen aller oder umgekehrter Auswahlfunktionen

In diesem Artikel wird der spezifische JavaScript...

Webdesign: Wenn der Titel nicht vollständig angezeigt werden kann

<br />Ich habe mir heute die neu gestaltete ...

Das Installationstutorial zu mysql5.5.28 ist super detailliert!

mysql5.5.28 Installations-Tutorial zu Ihrer Infor...

So laden Sie Projekte im Linux-System in die Code Cloud hoch

Erstellen Sie ein neues Projekt test1 auf Code Cl...

Ein kurzer Vortrag über das Klonen von JavaScript

Inhaltsverzeichnis 1. Oberflächliches Klonen 2. T...

...

CSS HACK für IE6/IE7/IE8/IE9/FF (Zusammenfassung)

Seit ich die offizielle Version von IE8.0 install...

MySQL fragt den aktuellsten Datensatz der SQL-Anweisung ab (Optimierung)

Die schlechteste Option besteht darin, die Ergebn...