Detaillierte Erklärung zum manuellen Hochladen von Excel-Dateien auf den Server mit Vue ElementUI

Detaillierte Erklärung zum manuellen Hochladen von Excel-Dateien auf den Server mit Vue ElementUI

Überblick

Die spezifischen Nachfrageszenarien sind wie folgt:

Nach der Auswahl der Excel-Datei müssen Sie die importierte Excel-Datei manuell auf den Backend-Server hochladen und nach dem erfolgreichen Import die statistischen Ergebnisse anzeigen. Auf der offiziellen Website finden Sie auch Beispiele für manuelle Uploads, bei denen die Adresse über action="url" übergeben wird. In tatsächlichen Projekten müssen die Anforderungen jedoch von Ihnen selbst konfiguriert werden. Im Folgenden wird beschrieben, wie das geht.

veranschaulichen:

Vom Hochladen von Dateien bis zum Anzeigen statistischer Ergebnisse bietet unser Backend zwei Schnittstellen: Rufen Sie zuerst die Schnittstelle zum Hochladen von Dateien auf und rufen Sie nach erfolgreichem Hochladen die Schnittstelle für statistische Ergebnisse basierend auf der vom Backend zurückgegebenen Markierung auf.

Eigenschafteneinstellungen

.vue-Dateien

<el-Zeile>
    <div Klasse="el-form-item__content">
        <el-upload ref="hochladen"
            akzeptieren=".xls,.xlsx"
            Aktion=""
            :auto-upload="false"
            :mehrere="falsch"
            :file-list="Dateiliste"
            :before-upload="vor dem Hochladen"
            :http-request="HttpRequest hochladen"
            :on-remove="Datei entfernen"
            :on-change="Dateiänderung">
            <el-button size="small" type="primary">Datei auswählen</el-button>
            <div slot="tip" class="el-upload__tip">Es kann jeweils nur eine xls/xlsx-Datei hochgeladen werden und die Dateigröße sollte 10 MB nicht überschreiten</div>
        </el-upload>
    </div>
</el-row>
<el-Zeile>
    <el-button size="small" @click="closeDialog">Abbrechen</el-button>
    <el-button type="primary" size="small" @click="submitUpload">Hochladen</el-button>
    <el-button type="primary" size="small" @click="downloadRes">Feedback-Ergebnisse herunterladen</el-button>
</el-row>

In:

  • Aktion: Die hochgeladene Adresse. Sie müssen nicht viel darauf achten, aber es wird nicht empfohlen, sie zu löschen. Sie können stattdessen eine normale Zeichenfolge verwenden.
  • Auto-Upload: ob automatisch hochgeladen werden soll. Da es sich um einen manuellen Upload handelt, setzen Sie es auf „False“.
  • multiple: ob Mehrfachauswahl unterstützt werden soll, hier auf false setzen
  • Dateiliste: hochgeladenes Dateilisten-Array
  • before-upload: Der Hook vor dem Hochladen der Datei. Der Parameter ist die hochgeladene Datei. Hier können Sie den Typ und die Größe der hochgeladenen Datei beurteilen.
  • http-request: Passen Sie die Upload-Methode an, die das Standard-Upload-Verhalten (z. B. action="url") überschreibt.
  • on-remove: Methode, die ausgelöst wird, wenn die hochgeladene Datei entfernt wird
  • on-change: Methode, die ausgelöst wird, wenn sich der Status der hochgeladenen Datei (hinzugefügt, erfolgreich hochgeladen oder fehlgeschlagen) ändert

Verarbeitungslogik

Der logische Verarbeitungscode lautet wie folgt:

Methoden: {
    // Hook vor dem Hochladen von Dateien: Bestimmen Sie das Format und die Größe der hochgeladenen Datei und stoppen Sie den Upload, wenn false zurückgegeben wird beforeUpload(file) {
        //Dateityp const isType = file.type === 'application/vnd.ms-excel'
        const isTypeComputer = Datei.Typ === 'Anwendung/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        const Dateityp = istTyp || istTypComputer
        if(!Dateityp) {
            this.$message.error('Hochgeladene Dateien können nur im xls/xlsx-Format vorliegen!')
        }

        // Die Dateigrößenbeschränkung beträgt 10 MB.
        const fileLimit = Dateigröße / 1024 / 1024 < 10;
        wenn(!DateiLimit) {
            this.$message.error('Die hochgeladene Datei ist nicht größer als 10 MB!');
        }
        returniere Dateityp && Dateilimit
    },
    // Benutzerdefinierte Upload-Methode, param ist der Standardparameter, Sie können die Dateiinformationen abrufen, die spezifischen Informationen lauten wie folgt: uploadHttpRequest(param) {
        const formData = new FormData() //FormData-Objekt, das Hinzufügen von Parametern kann nur über append('key', value) erfolgen formData.append('file', param.file) //Dateiobjekt hinzufügen formData.append('uploadType', this.rulesType)
        const url = `${this.myBaseURL}/operation/ruleImport/importData` //Upload-Adresse axios.post(url, formData)
            .dann( res => {
                const { Daten: { Code, Markierung } } = res
                wenn(code === 0) {
                    param.onSuccess() // Erfolgreich hochgeladene Dateien werden mit einem grünen Häkchen markiert this.uploadMark = mark
                }
                return this.countData(this.uploadMark) //Rufen Sie die Schnittstelle für Statistikergebnisse entsprechend dem Markierungswert der Antwort auf und geben Sie ein Versprechen für den Kettenaufruf zurück})
            .then( res => { //Kettenaufruf, Antwort auf statistische Ergebnisse const { data: { code, data } } = res
                wenn(code === 0) {
                    console.log('Statistische Ergebnisse', Daten)
                }
            })
            .catch( err => {
                console.log('fehlgeschlagen', Fehler)
                param.onError() //Dateien, deren Upload fehlgeschlagen ist, werden aus der Dateiliste gelöscht})
    },
    // Statistische Ergebnisse countFile(mark) {
        returniere neues Promise((lösen, ablehnen) => {
            Achsen
                .get(`/operation/ruleImport/countData?mark=${mark}`)
                .then(res => {
                    Entschlossenheit (res)
                })
                .catch(Fehler => {
                    ablehnen(Fehler)
                })
        })
    },
    // Zum Hochladen klicken: Manuelles Hochladen auf den Server, wodurch die HTTP-Anfrage der Komponente ausgelöst wird
    sendeUpload() {
        dies.$refs.upload.submit()
    },
    // Die Datei ändert sich fileChange(file, fileList) {
        if (Dateiliste.Länge > 0) {
            this.fileList = [fileList[fileList.length - 1]] // Die letzte ausgewählte Datei anzeigen}
    },
    // Entferne die ausgewählten Dateien fileRemove(file, fileList) {
        wenn(Dateiliste.Länge < 1) {
            this.uploadDisabled = true // Deaktiviere den Upload-Button, wenn keine Datei ausgewählt ist}
    },
    //Abbrechen closeDialog() {
        this.$refs.upload.clearFiles() //Hochgeladenes Dateiobjekt löschen this.fileList = [] //Ausgewählte Dateiliste löschen this.$emit('close', false)
    }
}

Der Param-Parameter der HTTP-Anfrage wird wie in der Abbildung gezeigt gedruckt. Holen Sie sich das aktuelle Dateiobjekt über param.file.

Oben finden Sie eine ausführliche Erklärung zum manuellen Hochladen von Excel-Dateien auf den Server mithilfe von Vue ElementUI. Weitere Informationen zum manuellen Hochladen von Excel-Dateien auf den Server mithilfe von Vue ElementUI finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Implementierung des Hochladens mehrerer Dateien auf einmal mit el-upload in element-ui
  • Element-UI-Implementierungsbeispiel für den Upload mehrerer Dateien
  • vue+element_ui lädt Dateien hoch und übergibt zusätzliche Parameter
  • Vue elementUI verarbeitet Batch-Datei-Upload

<<:  Lösung für das Problem, dass die lokale MySQL-Anmeldung keine Portnummer zum Anmelden verwenden kann

>>:  Grafisches Tutorial zur Installation der neuesten Version des MySQL-Servers unter Windows 7 64 Bit

Artikel empfehlen

Detaillierte Installationsanleitung für das Cloud-Server-Pagoda-Panel

Inhaltsverzeichnis 0x01. Installieren Sie das Pag...

Verwenden von System.Drawing.Common in Linux/Docker

Vorwort Nachdem das Projekt auf .net Core migrier...

CnBlogs - Teilen im benutzerdefinierten Blogstil

Nachdem ich die halbe Nacht daran gearbeitet hatt...

Lösung für das zu langsame Herunterladen des Docker-Images

Der Download des Docker-Images hängt oder ist zu ...

Nginx kompiliert nginx - neues Modul hinzufügen

1. Vorhandene Module anzeigen /usr/local/nginx/sb...

CSS kompletter Parallax-Scrolling-Effekt

1. Was ist Beim Parallax-Scrolling handelt es sic...

Der Unterschied zwischen HTML Empty Link href="#" und href="javascript:void(0)"

# enthält eine Standortinformation. Der Standardan...

Verwenden Sie Docker, um ein Git-Image mithilfe des Klon-Repositorys zu erstellen

Überblick Ich verwende Docker seit über einem Jah...

Leitfaden zum Schreiben von HTML-Code

Gängige Konventions-Tags Selbstschließende Tags, ...

25 Beispiele für Website-Design im Nachrichtenstil

bmi Voyager Heugabel Ulster Lebensmittelhändler F...

Detaillierte grafische Erläuterung der MySql5.7.18-Zeichensatzkonfiguration

Hintergrund: Vor langer Zeit (2017.6.5, der Artik...

Eine kurze Analyse der LRU-verknüpften Liste von MySQL

1. Beschreiben Sie kurz die traditionelle LRU-ver...