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

Grundlegende Implementierung der AOP-Programmierung in JavaScript

Einführung in AOP Die Hauptfunktion von AOP (Aspe...

Implementierung eines laufenden Springboot-Projekts mit Docker

Einführung: Die Konfiguration von Docker, auf dem...

10 Tipps zum Entwerfen nützlicher, benutzerfreundlicher Webanwendungen

Hier sind 10 Tipps zum Entwerfen benutzerfreundli...

Prinzipanalyse des UDP-Verbindungsobjekts und Anwendungsbeispiele

Ich habe zuvor zum Einstieg in UDP ein einfaches ...

JS implementiert einen einfachen Zähler

Verwenden Sie HTML, CSS und JavaScript, um einen ...

Die Fallstricke bei der Bereitstellung von Angular-Projekten in Nginx

Wenn man online nach Methoden sucht, um Angular -...

So kapseln Sie Paging-Komponenten manuell in Vue3.0

In diesem Artikel wird der spezifische Code der m...

Vue implementiert den Anwesenheitskalender von DingTalk

In diesem Artikel wird der spezifische Code von V...

So ändern Sie das Passwort in MySQL 5.7.18

So ändern Sie das Passwort in MySQL 5.7.18: 1. Fa...

Implementierung der CSS-Transformation des Seitenumblätter-Animationsdatensatzes

Szenario mit dem Problem des Seitenumblätterns B ...

Implementierung der MySQL8.0.11-Datenverzeichnismigration

Das Standardspeicherverzeichnis von MySQL ist /va...

Sie müssen wahrscheinlich keine Switch-Anweisungen in JavaScript verwenden

Inhaltsverzeichnis Kein Schalter, keine komplexen...