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

So verwenden Sie CSS, um mehrere Bilder horizontal in der Mitte anzuzeigen

Lassen Sie mich zunächst über die Implementierung...

Lösung zum automatischen Stoppen des MySQL-Dienstes

Dieser Artikel stellt hauptsächlich die Lösung fü...

Vue.js implementiert eine einfache Timerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Führen Sie die Shell oder das Programm im Docker-Container auf dem Host aus.

Um zu vermeiden, dass für den Betrieb immer wiede...

Fallstudie zum JavaScript DOMContentLoaded-Ereignis

DOMContentLoaded-Ereignis Es wird buchstäblich au...

Tutorial zur Installation von MySQL 5.6 mit RPM in CentOS

Alle vorherigen Projekte wurden in der Windows-Sy...

Ausführliche Erklärung der Set- und WeakSet-Sammlungen in ES6

Inhaltsverzeichnis Ein Set ist eine spezielle Sam...

Eine kurze Diskussion über die Rolle von Vue3 defineComponent

Inhaltsverzeichnis defineComponent-Überladungsfun...

Antworten auf mehrere häufig gestellte MySQL-Interviewfragen

Vorwort: Bei Vorstellungsgesprächen für verschied...

Ein einfaches Tutorial zur Verwendung des MySQL-Protokollsystems

Inhaltsverzeichnis Vorwort 1. Fehlerprotokoll 2. ...

Erfahren Sie mehr über das V-Modell und seine Modifikatoren in einem Artikel

Inhaltsverzeichnis Vorwort Modifikatoren des V-Mo...

Vollständiger Vue-Code zur Implementierung der Single-Sign-On-Steuerung

Hier ist zu Ihrer Information eine Vue-Single-Sig...