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 erzielen Sie mit CSS einen Daten-Hotspot-Effekt

Die Wirkung ist wie folgt: analysieren 1. Hier se...

Lassen Sie uns das Ereignisobjekt in js genauer verstehen

Wir wissen, dass die in JS am häufigsten verwende...

So verwenden Sie Nginx als Proxy-Cache

Der Zweck der Cache-Verwendung besteht darin, den...

innerHTML-Anwendung

Blanks Blog: http://www.planabc.net/ Die Verwendu...

Vue verwendet Plug-Ins, um Bilder proportional zuzuschneiden

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

Analyse des Prinzips und der Erstellungsmethode der temporären MySQL-Tabelle

In diesem Artikel werden hauptsächlich das Prinzi...

Detaillierter Prozess der Vue-Front-End-Verpackung

Inhaltsverzeichnis 1. Verpackungsbefehl hinzufüge...

Lernen Sie Node.js von Grund auf

Inhaltsverzeichnis URL-Modul 1.Parse-Methode 2. F...

CSS transparenter Rahmen Hintergrund-Clip-Magie

In diesem Artikel wird hauptsächlich die wunderba...

Ursachen und Lösungen für Verzögerungen bei der MySQL Master-Slave-Replikation

Inhaltsverzeichnis Ein kurzer Überblick über die ...